我简历上的项目好 Low,怎么破?

栏目: 后端 · 发布时间: 7年前

内容简介:作者 | 中华石杉责编 | 伍杏玲本文经授权转载石杉的架构笔记(ID:shishan100)

作者 | 中华石杉

责编 | 伍杏玲

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

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

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


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Math Adventures with Python

Math Adventures with Python

Peter Farrell / No Starch Press / 2018-11-13 / GBP 24.99

Learn math by getting creative with code! Use the Python programming language to transform learning high school-level math topics like algebra, geometry, trigonometry, and calculus! In Math Adventu......一起来看看 《Math Adventures with Python》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

SHA 加密
SHA 加密

SHA 加密工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具