作者 | 中华石杉

责编 | 伍杏玲

本文经授权转载石杉的架构笔记(ID:shishan100)

【CSDN 编者按】你有没有这样的经历?工作两三年,做过大大小小的项目,可在写简历的项目经验时却发愁,不知道写啥,感觉没什么项目能拿出手的,均是些增删改查的业务项目。

这篇文章我们来聊一聊在系统设计和项目经验这两块,应该如何充分的准备,才能拿出有技术含量的项目经验战胜跟你同台竞技的其他工程师,征服你的面试官,收获心仪的 Offer。

高级工程师必备:系统设计能力

在招聘高级及以上工程师的时候,一定会严格考察一项能力:系统设计能力。

因为如果一个开发者仅是对各种各样的技术都熟悉,即使有技术广度,也有一定的技术深度,实际上是不够的。如果他的系统设计能力不到位,可能导致他在开发系统的时候会乱用技术。

比如说,有的系统有一些自己特殊的业务场景和技术挑战,实际上在这个场景之下比较合适的是采用 “缓存 + 数据库” 的技术方案来应对。

但是有的工程师会很多技术,但是缺少这种准确的分析系统问题,提出合理的技术方案的能力,也就是缺少系统设计能力,导致他可能会引入Elasticsearch这种技术来尝试解决这个问题。

那么结果必然是失败的。之前很多人找我问问题,说我在XX场景下,用了XX技术,但是没有起到想要的那个结果啊?

我一看,这不是必然的么?你的XX技术应该用在YY场景下,结果你用到XX场景下,肯定是不行的。

这就是系统设计能力的重要性。

那么落地到现在的互联网行业的面试,大家应该会注意到,很多大厂都会越来越开始问一些系统设计类的问题,举几个例子来看看:

1.如果让你设计一个秒杀系统,你会如何设计?

2.如果让你来设计一个消息中间件,你会从哪些方面来考虑?核心的架构以及数据结构如何设计?

3.如果让你来负责一个电商双11大促系统,你会如何来考虑和设计?

4.我们公司有这样的一个业务场景,XXXX,我给你画个图,YYYY,   就根据这样的一个场景以及面临的问题。如果让你来设计这个系统, 你会如何考虑?

其实如果你在面试的时候遇到上面的那些问题,就是典型的系统设计问题。

面试中的系统设计问题主要分为两类,一类是常规性的,比如秒杀系统的设计,另外一类是那个公司自己的业务场景下的系统设计。

第一类系统设计问题其实很好快速突击准备,你可以到网上搜互联网公司常问的系统设计问题。

收集好典型问题之后,百度技术博客给出的技术架构设计的思路,将这些思路自己进行整理总结,然后转化为自己的语言,最后落地到纸上画出架构图。

到面试现场,你能够画图把这个系统设计思路说清楚,这个基本就OK了。

这个准备时间不长,突击的话可能几天时间也足够了。

当然,最好的结果,必然是你自己本身做过类似的一些有挑战的系统。

此时你遇到这种系统设计问题,直接说,这类系统我之前做过,然后把自己之前的项目经验都现场画图给说出来。

第二类系统设计问题就不太好准备,这考验的真正的系统设计能力,短时间内针对一个业务场景和技术难点,能否迅速给出一个初步的架构设计和技术方案。

第二类系统设计问题,从长期积累和准备的角度,我的建议是在平时自己在开发系统的时候多思考,自己的这个系统有没有什么技术难题,针对这个技术难题应该用什么技术,什么方案来解决,这就是潜移默化的在积累系统设计能力。

但是如果从临时抱佛脚的角度,平时没那样的积累,遇到第二类灵活开放的系统设计问题,那也不能一问三不知,大眼瞪小眼。

因此,我的建议是:

  1. 对于你要面试的公司,尽可能的多做了解。比如公司业务背景、用户量。

  2. 关注目标公司有官方的社区或者官方公众号,查看技术分享。

  3. 如果面试时,面试官针对他们公司的具体业务出了一个系统设计题目,你如果没有思路,建议尽可能的结合第一类的常规系统设计题目来思考套用。

举个例子,比如你面试一个 P2P 金融业务的公司,如果被问到大量用户同时抢标,如何设计架构?

即使你没有做过,但是你可以结合一些常规的系统设计题,比如秒杀系统的设计思路,套用在这个新的业务上。

而你如果在面试这家公司前,大致了解了其业务背景,那么对你回答这类系统设计相关的题目,肯定也是很有帮助的。

谈谈项目经验的技术含量

在解决了系统设计问题之后,在任何一个公司的面试中,一定会涉及到你作为一个工程师最最核心的价值和能力,就是你做过的项目。

这块是面试准备时的重中之重,应该作为最高优先级来对待。

有很多同学,做的项目其实挺不错,但是平时疏于总结,面试前也不准备,结果面试时支支吾吾,半天答不上来,白白浪费面试机会。

比如一个非常典型的项目经验的面试考察情景如下:面试官反复的追问项目的各个地方的技术实现细节,就想看看有没有哪个地方是有一定的技术难度的,可以体现出这个候选人的一些项目上的亮点。

候选人说来说去,总是从业务的角度去说,就说有哪些子系统组成,分别是干什么的,如何交互的,看来看去都是系统业务的东西,就是没看到什么有技术含量的东西在项目里体现出来了。

如果出现上述的情况,那么这个候选人要拿大厂Offer的概率就很低了。

因为你的项目里没看出来什么东西,没什么亮眼的地方。你看起来就跟千千万万个普通的工程师没任何区别。

在薪水方面,你要价23k,但是另外一个人要价是20k,还有一个人要价是18k。

在这种情况下,对方为什么不找一个更年轻有冲劲的小伙子,他也做过跟你类似的一些没太大技术含量的项目。

虽然你工作了5年,人家就工作了3年,但是从技术和项目两块考察,你跟他没太大区别。你不过就是比他多工作了2年,多做了几个没技术含量的项目罢了。

但是在薪资要求方面,你比人家多了5k,在这个时候,面试官在没更好选择的情况下,一定会找那个薪资要求仅18k的小伙子。

这也是为什么很多同学不好好准备出去面试,结果面半天,老是被人家说:你先回去等通知,我们要再多面试几个候选人综合考察一下。到最后面试好多次也拿不到几个Offer。

原因很简单,你没什么能打动面试官的亮点,没什么太突出的能力。而工作年限越长,薪资要求越高,就越是不容易拿到好公司的Offer。

上面说的是一个极端,这类同学对自己做过的项目毫不重视,导致无法在面试中复现项目中的各种技术细节、技术难点。

这样,即使项目很牛,那又有何用,你当时做项目的时候,面试官又不在场。

也有不少同学,他们的项目其实并不高端,但是凭借自己精心的准备,加上一些面试技巧,巧妙的让自己的项目脱胎换骨,瞬间变得高大上。

所以说项目准备这里面有不少门道,接下来咱们就来聊聊。

如何准备

咱们分为两条路线来谈:一个是长期准备型;一个是短期突击。

对于前者,我个人的建议,平时你工作的时候,一定多给自己设立技术挑战。总结起来一句话:没有困难,制造困难也要上。

这里面可能会存在对于架构的过度设计的问题,站在公司的层面会觉得花那么多时间设计这些架构实在是无用功,但是从个人发展的角度,为了你的职业生涯发展,你有时不得不过度设计一下。

这个对公司也未必是一件坏事,万一以后公司规模发展起来了呢?

举个例子,你在公司目前是负责一个OA办公系统,就内部几十个人使用,主要就是写写业务、CRUD的,很low的项目。

使用的技术就是简单的SSM,可能连SpringBoot都没上,整个项目就部署的一个单体工程,没有微服务、没有缓存、跟所有高并发高可用等技术完全绝缘。

确实,几十个人用,你何必杀鸡焉用宰牛刀呢?

但是想象一下,如果公司是世界500强,这套OA系统有上万人使用,那么情况就不同了,需要另外一套技术架构。你完全可以在工作中给自己做这样的假设,设置这样的难题。

这只是笔者举的例子,之所以用这个举例,是想说明无论你做的是什么项目,你都可以从某种角度出发,给自己制造各种技术难题,然后解决难题。

你可以在不要给工作量增添太多的情况下,尽可能从公司发展的角度去考虑,向领导阐述你的考虑,这样公司未来发展5~10年,这套架构都够用了。

并且在面试时,在你阐述项目经验的时候,可以让面试官看到你在里面有更多的技术架构的设计,考虑到了解决更多的技术问题,那么自然你的面试表现就会更好,就更加容易会拿到更好的Offer了。

上述就是所说的第一点,长期情况下应该如何积累自己的项目面试经验。

接下来说说第二点,项目的短期突击应该如何进行,才能尽可能的让我们的项目显得更加吸引人。

笔者先强调,这种临阵磨枪的效果肯定比不上长期的一步步稳扎稳打,这只是一种应对面试的退而求其次之选。

计算通过这种短期突击的打法拿到了心仪的Offer,还是应该沉下心来,一步步积累,技术的东西,来不得半点马虎。

那么如何临阵磨枪呢?

你应该反复思考,目前负责的系统应该引入什么样的技术架构,采用何种技术方案,才能抗住各种冲击。

虽然你没有大把时间来付诸实践,但是你一定要自己思考,同时看下国内大型互联网公司的技术架构,他们使用了哪些高大上的技术,对于某个技术难点采用了什么技术方案。

在面试的时候,可以阐述你对这个项目一些问题的思考,以及技术方案、架构如何来设计,这样设计可以解决什么技术问题,有没有更好的方案选择。

这样一来,你起码比普通工程师多一些思考,提出更多的方案,这也能成为你更加亮眼的地方。

做,总比不做强。

你对自己的项目思考了很多的技术方案,也不至于说充满了各种CRUD,毫无亮点可言。

作者简介:中华石杉,十余年BAT架构经验倾囊相授

公众号:石杉的架构笔记(ID:shishan100)

牛了,这几个案例让你迅速掌握AI技术!

https://edu.csdn.net/topic/ai30?utm_source=csdn_bw

作为码一代,想教码二代却无从下手:

听说少儿编程很火,可它有哪些好处呢?

孩子多大开始学习比较好呢?又该如何学习呢?

最新的编程教育政策又有哪些呢?

下面给大家介绍CSDN新成员:极客宝宝(ID:geek_baby)

戳他了解更多↓↓↓

 热 文 推 荐 

☞ 杨镭访谈:UCloud 的技术价值观

☞ 不懂嵌入式,何谈物联网?

☞ Java 在「权力的游戏」里,能活到第几集?

☞ 19 岁当老板,20 岁 ICO 失败,编程少年的创业辛酸史

☞ 养生 996 的崛起:马云竟给他最痛恨的「兔子」站台?

☞ 打开阿兹海默之门:华裔张复伦利用RNN成功解码脑电波,合成语音 | Nature

☞ 澳洲生活7年, 前阿里程序员谈我们的区块链差距究竟在哪?

☞ 关于谷歌云,你应该知道的一切!| 技术头条

☞ 她说:为啥程序员都特想要机械键盘?这答案我服!

 

System.out.println("点个在看吧!");
console.log("点个在看吧!");
print("点个在看吧!");
printf("点个在看吧!\n");
cout << "点个在看吧!" << endl;
Console.WriteLine("点个在看吧!");
Response.Write("点个在看吧!");
alert("点个在看吧!")
echo "点个在看吧!"

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

你点的每个“在看”,我都认真当成了喜欢

我简历上的项目好 Low,怎么破?相关推荐

  1. 简历上的项目经历怎么写 ?这 3 条原则不可忽视 !...

    阅读本文大概需要 5 分钟. 作者:黄小斜 文章来源:微信公众号[程序员江湖] ​ 作为一个程序员,想必大家曾经都做过一些项目,可能现在手头上也还有一些项目. 不过还是有很多学生朋友来问我" ...

  2. 简历上的项目经历怎么写 ?这 3 条原则不可忽视 !

    阅读本文大概需要 5 分钟. 作者:黄小斜 作为一个程序员,想必大家曾经都做过一些项目,可能现在手头上也还有一些项目. 不过还是有很多学生朋友来问我"没有项目怎么办",诚然,确实有 ...

  3. python工程师简历项目经验怎么写_简历上的项目经历怎么写 ?这 3 条原则不可忽视 !...

    阅读本文大概需要 5 分钟. 作者:黄小斜 作为一个程序员,想必大家曾经都做过一些项目,可能现在手头上也还有一些项目. 不过还是有很多学生朋友来问我"没有项目怎么办",诚然,确实有 ...

  4. 用户分析与RFM模型实战|一个可以写在简历上的项目(下)

    大家好,我是芒果. 接上文:用户分析与RFM模型实战|一个可以写在简历上的项目(上) 本篇会继续对此数据对产品维度和用户分层维度进行分析. 依然结论先行: 重要结论

  5. 刚毕业,简历上的项目经验怎么写

    文章目录 前言 如何获取[80个"项目经验"] 前言 很多刚毕业或者培训完计算机编程的同学简历上的项目经验不知道怎么写,关注公众号:Java时间屋,回复:项目 发送你80个项目经验 ...

  6. 简历上面的项目经历怎么写?怎么写才能显得突出?

    项目经历可不可以是课堂项目? 其实对很多同学来说,不是不会写项目经历,而是根本不知道什么是项目经历,哪些内容可以写在项目经历中.所以看到简历中的项目经历模块,感觉不知道怎么写?那么对于大学生来说,即使 ...

  7. 如何包装简历上的项目?

    这篇文章我们来聊一聊,在系统设计和项目经验这两块,应该如何充分的准备,才能拿出有技术含量的项目经验战胜跟你同台竞技的其他工程师,征服你的面试官,收获各种心仪的offer. (1)高级工程师必备:系统设 ...

  8. 【Java项目推荐】值得写到简历上的项目--黑马点评

    优惠卷秒杀 前言 优惠券秒杀 实现优惠券秒杀下单 超卖问题 一人一单 分布式锁 redis中加锁的一些特殊情况 手动实现分布式锁 分布式锁误删情况1 分布式锁误删情况2 lua脚本解决多条命令的原子性 ...

  9. 车机测试简历上的项目怎么写?

    项目介绍: 长安汽车车机是以腾讯车载互联为基础,融合了多媒体影音系统(QQ音乐.喜马拉雅FM.酷我音乐).车载导航.车辆功能设定这些选项,可以在线听歌.导航.查看360度全景影像辅助系统,让车主驾车更 ...

最新文章

  1. windows 10 安装openssh 0x800f0954 的一种解决方法
  2. Python代码加密,将python文件编译成so文件
  3. ABAP的自学之路 ,初步认识ABAP 一
  4. 数据结构--------------静态表的希尔排序
  5. 1381. 设计一个支持增量操作的栈
  6. spring 处理带有特殊字符的请求_Spring爸爸又给Spring MVC生了个弟弟叫Spring WebFlux...
  7. 百亿流量系统,是如何从0开始搭建的?
  8. CFS任务的负载均衡(框架篇)
  9. FPGA Marvell 88exxxx phy 动起来
  10. oneday2mybatis下载
  11. MSDE 下载安装、创建管理数据库
  12. Spring cloud搭建HSF框架,整合mybatis、redis、rabbit
  13. html背景图片悬浮置顶,详解使用CSS固定页面背景图片位置的方法
  14. 【基金量化研究系列】大类资产配置研究(四)——基于马科维茨模型的资产配置研究
  15. 大陆身份证号码格式校验
  16. MPB:北林袁峥嵘组-​16S扩增子分析中常用软件及数据库应用现状
  17. 基于Altium Designer 09制作LOGO的方法
  18. 神经网络调参:loss 问题汇总(震荡/剧烈抖动,loss不收敛/不下降)
  19. 大家好!我是刘伦斯,一个喜欢书法、摄影的计算机童鞋
  20. Android实现一键复制粘贴,兼容低版本系统(api 11以下)

热门文章

  1. 训练神经网络的技巧总结
  2. drupal安装chosen模块
  3. ASP.NET Web开发中Repeater控件的使用
  4. insert into select 插入不进去数据
  5. C#算法题目自己的解答 约德尔测试
  6. FindBugs 初识
  7. 如何在手机浏览器上访问在电脑上运行的javaweb项目
  8. Python抢票工具
  9. 虚拟试妆项目持续更新中。。。。
  10. Win32-进程锁-进程异步-进程互斥-CreateMutex-OpenMutex-WaitForSingleObject-ReleaseMutex