技术⾯试问项⽬难题如何解决的_我简历上的Java项⽬都好
low,怎么办?
这篇⽂章我们来聊⼀聊,在系统设计和项⽬经验这两块,应该如何充分的准备,才能拿出有技术含量的项⽬经验战胜跟你同台竞技的其他⼯程师,征服你的⾯试官,收获各种⼼仪的offer。
⼀、⾼级⼯程师必备:系统设计能⼒
我们⼀般在招聘⾼级及以上⼯程师的时候,⼀定会严格考察⼀项能⼒,系统设计能⼒。
因为如果你仅仅是对各种各样的技术都熟悉,有技术⼴度,也有⼀定的技术深度,实际上是不够的。如果你的系统设计能⼒不到位,可能导致你在开发系统的时候会乱⽤技术。
⽐如说,有的系统他有⼀些⾃⼰特殊的业务场景和技术挑战,实际上在这个场景之下⽐较合适的是采⽤ “缓存 + 数据库” 的技术⽅案来应对。
微服务在哪里但是呢,有的⼯程师会很多技术,但是缺少这种准确的分析系统问题,提出合理的技术⽅案的能⼒,也就是缺少系统设计能⼒,导致他可能会引⼊Elasticsearch这种技术来尝试解决这个问题。
那么结果必然是失败的。所以之前很多⼈我问问题,说我在XX场景下,⽤了XX技术,但是没有起到我想要的那个结果啊?
我帮他⼀看,这不是必然的么,你的XX技术应该⽤在YY场景下,结果你⽤到XX场景下,肯定是不⾏的。
这就是系统设计能⼒的重要性。
那么落地到现在的互联⽹⾏业的⾯试,⼤家应该会注意到,很多⼤⼚都会越来越开始问⼀些系统设计类的问题,举⼏个例⼦来看看:
1. 如果让你设计⼀个秒杀系统,你会如何设计?
2. 如果让你来设计⼀个消息中间件,你会从哪些⽅⾯来考虑?核⼼的架构以及数据结构如何设计?
3. 如果让你来负责⼀个电商双11⼤促系统,你会如何来考虑和设计?
4. 我们公司有这样的⼀个业务场景,XXXX,我给你画个图,YYYY, 就根据这样的⼀个场景以及⾯临的问题。如果让你来设计这个系
统, 你会如何考虑?
其实如果你在⾯试的时候遇到上⾯的那些问题,就是典型的系统设计问题。
⾯试中的系统设计问题主要分为两类,⼀类是常规性的,⽐如秒杀系统的设计,另外⼀类是那个公司⾃⼰的业务场景下的系统设计。
第⼀类系统设计问题其实很好快速突击准备,你可以到⽹上搜⼀搜互联⽹公司常问的⼀些系统设计问题。
收集好⼀些典型问题之后,百度⼀些技术博客给出的技术架构设计的思路,将这些思路⾃⼰进⾏整理总结,然后转化为⾃⼰的语⾔,最后落地到纸上画出架构图。
到⾯试现场,你能够画图把这个系统设计思路说清楚,这个基本就OK了。
这个准备时间不长,突击的话可能⼏天时间也⾜够了。
当然,还是那句话,最好的结果,必然是你⾃⼰本⾝做过类似的⼀些有挑战的系统。
此时你遇到这种系统设计问题,直接可以很⽜叉的说,这类系统我之前做过,然后把⾃⼰之前的项⽬经验都现场画图给说出来。
第⼆类系统设计问题就不太好准备了,因为完全考验的是你实打实的系统设计能⼒,短时间内针对⼀个业务场景和技术难点,能否迅速给出⼀个初步的架构设计和技术⽅案。
第⼆类系统设计问题,从长期积累和准备的⾓度,我的建议是在平时⾃⼰在开发系统的时候多思考,⾃⼰的这个系统有没有什么技术难题,针对这个技术难题应该⽤什么什么技术,什么⽅案来解决,这就是潜移默化的在积累系统设计能⼒。
但是如果从临时抱佛脚的⾓度,平时没那样的积累,遇到第⼆类灵活开放的系统设计问题,那也不能⼀问三不知,⼤眼瞪⼩眼。
因此,我的建议是:
1. 对于你要⾯试的公司,尽可能的多做了解。⽐如公司业务背景,⼤概⽤户量,这些都可以了解⼀下。
2. 如果⽬标公司有官⽅的社区或者官⽅,关注⼀下,看看上⾯的技术分享。
3. 然后如果⾯试时,⾯试官针对他们公司的具体业务出了⼀个系统设计题⽬,你如果没有思路,建议尽可能的结合第⼀类的常规系统设
计题⽬来思考套⽤。
举个例⼦,⽐如你⾯试⼀个p2p⾦融业务的公司,如果被问到⼤量⽤户同时抢标,如何设计架构?
你没有做过,但是你可以结合⼀些常规的系统设计题,⽐如秒杀系统的设计思路,套⽤在这个新的业务上。
⽽你如果在⾯试这家公司前,⼤致了解了其业务背景,那么对你回答这类系统设计相关的题⽬,肯定也是很有帮助的。
⼆、如何让你的项⽬经验更有技术含量
在解决了系统设计问题之后,任何⼀个公司,任何⼀个⾯试,都⼀定会涉及到你作为⼀个⼯程师最最核⼼的价值和能⼒,就是你的经验,具体来说就是你做过的项⽬。
这块是⾯试准备时的重中之重,应该作为最⾼优先级来对待。
有很多同学,做的项⽬其实挺不错,但是平时疏于总结,⾯试前也不准备,结果⾯试时⽀⽀吾吾,半天答不上来,⽩⽩浪费⾯试机会。
⽐如⼀个⾮常典型的项⽬经验的⾯试考察情景如下:⾯试官反复的追问项⽬的各个地⽅的技术实现细节,就想看看有没有哪个地⽅是有⼀定的技术难度的,可以体现出这个候选⼈的⼀些项⽬上的亮点。
但是呢,候选⼈说来说去,总是从业务的⾓度去说,就说有哪些⼦系统组成,分别是⼲什么的,如何交互的,看来看去都是系统业务的东西,就是没看到什么有技术含量的东西在项⽬⾥体现出来了。
如果出现上述的情况,那么这个候选⼈要拿⼤⼚offer的概率就很低了。
因为你的项⽬⾥没看出来什么东西,没什么亮眼的地⽅。你看起来就跟千千万万个普通的⼯程师没任何区别。
⽽且,在薪⽔⽅⾯,你要价23k,但是另外⼀个⼈要价是20k,还有⼀个⼈要价是18k。
在这种情况下,你觉得你的offer好拿么?我们为什么不⼀个更年轻,更有活⼒的,有冲劲的⼩伙⼦,他也做过跟你类似的⼀些没太⼤技术含量的项⽬。
虽然你⼯作了5年,⼈家就⼯作了3年,但是从技术和项⽬两块考察,你跟他没太⼤区别。你不过就是⽐他多⼯作了2年,多做了⼏个没技术含量的项⽬罢了。
但是在薪资要求⽅⾯,你可⽐⼈家多了5k,在这个时候,⾯试官在没更好选择的情况下,⼀定会那个薪资要求仅18k的⼩伙⼦。
这也是为什么很多同学不好好准备出去⾯试,结果⾯半天,⽼是被⼈家说:你先回去等通知,我们要再多⾯试⼏个候选⼈综合考察⼀下。到最后⾯试好多次也拿不到⼏个offer。
其实原因很简单,你没什么能打动⾯试官的亮点,没什么太突出的能⼒。⽽你的⼯作年限越长,薪资要求越⾼,就越是不容易拿到好公司的offer。
上⾯说的,是⼀个极端,这类同学对⾃⼰做过的项⽬毫不重视,导致⽆法在⾯试中复现项⽬中的各种技术细节、技术难点。
这样,即使你的项⽬很⽜,那⼜有何⽤,你当时做项⽬的时候,⾯试官⼜不在场。。。
然⽽,也有不少同学,他们的项⽬其实并不⾼端,甚⾄是有点low。但是呢,⼈家凭借⾃⼰精⼼的准备,加上⼀些⾯试技巧,巧妙的让⾃⼰的项⽬脱胎换⾻,瞬间变得⾼⼤上。
所以说,项⽬准备,百转千回,这⾥⾯有不少门道,接下来咱们就来聊聊。
同样,咱们分为两条路线来谈:⼀个是长期准备型;⼀个是短期突击,临阵磨。
对于前者,我个⼈的建议,还是像之前说过的⼀样,平时你⼯作的时候,⼀定多给⾃⼰设⽴技术挑战。总结起来⼀句话:没有困难,制造困难也要上。
这⾥⾯可能会存在对于架构的过度设计的问题,站在公司的层⾯会觉得花那么多时间设计这些架构实在是⽆⽤功,但是从个⼈发展的⾓度,为了你的职业⽣涯发展,你有时不得不过度设计⼀下。
况且,这个对公司也未必是⼀件坏事,万⼀你公司以后规模发展起来了呢?这个谁⼜说的清楚。
举个例⼦,你在公司⽬前是负责⼀个OA办公系统,就内部⼏⼗个⼈使⽤,主要就是写写业务,crud啥的,看起来很low的项⽬。
然后呢,你使⽤的技术就是简单的SSM,可能连SpringBoot都没上,整个项⽬就部署的⼀个单体⼯程,没有微服务、没有缓存、跟所有⾼并发⾼可⽤等技术完全绝缘。
确实,⼏⼗个⼈⽤,你何必杀鸡焉⽤宰⽜⼑呢?
但是想象⼀下,如果你的公司是⼀个世界500强,这套OA系统有上万⼈使⽤,那么情况肯定就不同了,可能就需要另外⼀套技术架构。你完全可以在⼯作中给⾃⼰做这样的假设,设置这样的难题。
当然,这只是笔者举的⼀个例⼦,之所以⽤这个举例,是想说明⼀下,⽆论你做的是什么项⽬,你都可以从某种⾓度出发,给⾃⼰制造各种技术难题,然后解决难题。
你可以在不要给⼯作量增添太多的情况下,尽可能从公司发展的⾓度去考虑,向领导阐述你的考虑,这样公司未来发展5~10年,这套架构都够⽤了。
并且在⾯试时,你在阐述项⽬经验的时候,可以让⾯试官看到你在⾥⾯有更多的技术架构的设计,考虑到了解决更多的技术问题,那么⾃然你的⾯试表现就会更好,就更加容易会拿到更好的offer了。
上述就是所说的第⼀点,长期情况下应该如何积累⾃⼰的项⽬⾯试经验。
接下来说说第⼆点,项⽬的短期突击应该如何进⾏,才能尽可能的让我们的项⽬显得更加吸引⼈。我估计可能更多的同学需要这⽅⾯的技巧。
但是笔者还是事先强调,这种短期突击、临阵磨,效果肯定是⽐不上长期的⼀步步稳扎稳打,这只是⼀种应对⾯试的退⽽求其次之选。
如果⼤家有时间,或者说通过这种短期突击的打法拿到了⼼仪的offer,还是应该沉下⼼来,⼀步步积累,技术的东西,来不得半点马虎。
如果你之前因为种种原因,在⾯试前没有做过多的长期积累,那么短期的情况下,应该如何临阵磨呢?
我这⾥的建议是,你⾃⼰⾄少应该反复思考,你⽬前负责的系统应该引⼊什么样的技术架构,采⽤何种技术⽅案,才能抗住各种冲击。
突击准备,你肯定没有⼤把时间来付诸实践,但是你⼀定要⾃⼰思考,同时百度⼀下国内⼤型互联⽹公司的技术架构,他们使⽤了哪些⾼⼤上的技术,对于某个技术难点采⽤了什么技术⽅案。
然后在⾯试的时候,可以对⾯试官阐述⼀下你对这个项⽬⼀些问题的思考,以及技术⽅案、架构如何来设计,这样设计可以解决什么技术问题,有没有更好的⽅案选择。
这样⼀来,你起码⽐普通⼯程师多⼀些思考,提出更多的⽅案,这也能成为你更加亮眼的地⽅。
还是那句话,做,总⽐不做强。你对⾃⼰的项⽬思考了很多的技术⽅案,这样和⾯试官总还有⼀些技术上的交流和探讨的东西。你的项⽬也不⾄于说充满了各种CRUD,毫⽆亮点可⾔。
写在最后:看到这⾥,点了关注吧!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。