内容简介:“上篇文章【金三银四跳槽季】Java工程师如何在1个月内做好面试准备?。我们聊了聊Java工程师在跳槽前的1个月,如何利用较短的时间从技术广度、技术深度、基础功底几个方面进行较为完善的准备。这篇文章我们继续来聊一聊,在系统设计和项目经验这两块,应该如何充分的准备,才能拿出有技术含量的项目经验战胜跟你同台竞技的其他工程师,征服你的面试官,收获各种心仪的offer。我们一般在招聘高级及以上工程师的时候,一定会严格考察一项能力,系统设计能力。
高级工程师必备:系统设计能力
如何让你的项目更有技术含量
“上篇文章【金三银四跳槽季】Java工程师如何在1个月内做好面试准备?。我们聊了聊 Java 工程师在跳槽前的1个月,如何利用较短的时间从技术广度、技术深度、基础功底几个方面进行较为完善的准备。
这篇文章我们继续来聊一聊,在系统设计和项目经验这两块,应该如何充分的准备,才能拿出有技术含量的项目经验战胜跟你同台竞技的其他工程师,征服你的面试官,收获各种心仪的offer。
(1)高级工程师必备:系统设计能力
我们一般在招聘高级及以上工程师的时候,一定会严格考察一项能力,系统设计能力。
因为如果你仅仅是对各种各样的技术都熟悉,有技术广度,也有一定的技术深度,实际上是不够的。如果你的系统设计能力不到位,可能导致你在开发系统的时候会乱用技术。
比如说,有的系统他有一些自己特殊的业务场景和技术挑战,实际上在这个场景之下比较合适的是采用 “缓存 + 数据库” 的技术方案来应对。
但是呢,有的工程师会很多技术,但是缺少这种准确的分析系统问题,提出合理的技术方案的能力,也就是缺少系统设计能力,导致他可能会引入Elasticsearch这种技术来尝试解决这个问题。
那么结果必然是失败的。所以之前很多人找我问问题,说我在XX场景下,用了XX技术,但是没有起到我想要的那个结果啊?
我帮他一看,这不是必然的么,你的XX技术应该用在YY场景下,结果你用到XX场景下,肯定是不行的。
这就是系统设计能力的重要性。
那么落地到现在的互联网行业的面试,大家应该会注意到,很多大厂都会越来越开始问一些系统设计类的问题,举几个例子来看看:
1、如果让你设计一个秒杀系统,你会如何设计?
2、如果让你来设计一个消息中间件,你会从哪些方面来考虑?核心的架 构以及数据结构如何来设计?
3、如果让你来负责一个电商双11大促系统,你会如何来考虑和设计?
**4、我们公司有这样的一个业务场景,XXXX,我给你画个图,YYYY, **
就根据这样的一个场景以及面临的问题,如果让你来设计这个系统, 你会如何考虑?
其实如果你在面试的时候遇到上面的那些问题,就是典型的系统设计问题。
面试中的系统设计问题主要分为两类,一类是常规性的,比如秒杀系统的设计,另外一类是那个公司自己的业务场景下的系统设计。
第一类系统设计问题其实很好快速突击准备,你可以到网上搜一搜互联网公司常问的一些系统设计问题。
收集好一些典型问题之后,百度一些技术博客给出的技术架构设计的思路,将这些思路自己进行整理总结,然后转化为自己的语言,最后落地到纸上画出架构图。
到面试现场,你能够画图把这个系统设计思路说清楚,这个基本就OK了。
这个准备时间不长,突击的话可能几天时间也足够了。
当然,还是那句话,最好的结果,必然是你自己本身做过类似的一些有挑战的系统。
此时你遇到这种系统设计问题,直接可以很牛叉的说,这类系统我之前做过,然后把自己之前的项目经验都现场画图给说出来。
第二类系统设计问题就不太好准备了,因为完全考验的是你实打实的系统设计能力,短时间内针对一个业务场景和技术难点,能否迅速给出一个初步的架构设计和技术方案。
第二类系统设计问题,从长期积累和准备的角度,我的建议是在平时自己在开发系统的时候多思考,自己的这个系统有没有什么技术难题,针对这个技术难题应该用什么什么技术,什么方案来解决,这就是潜移默化的在积累系统设计能力。
但是如果从临时抱佛脚的角度,平时没那样的积累,遇到第二类灵活开放的系统设计问题,那也不能一问三不知,大眼瞪小眼。
因此,我的建议是:
一、对于你要面试的公司,大致了解一下其业务背景,比如他是做什么的,用户量大概多少,这个一般百度就能搞定。
二、然后如果面试时,面试官针对他们公司的具体业务出了一个系统设计题目,你如果没有思路,建议尽可能的结合第一类的常规系统设计题目来思考套用。
举个例子,比如你面试一个p2p金融业务的公司,如果被问到大量用户同时抢标,如何设计架构?
你没有做过,但是你可以结合一些常规的系统设计题,比如秒杀系统的设计思路,套用在这个新的业务上。
而你如果在面试这家公司前,大致了解了其业务背景,那么对你回答这类系统设计相关的题目,肯定也是很有帮助的。
(2)如何让你的项目经验更有技术含量
在解决了系统设计问题之后,任何一个公司,任何一个面试,都一定会涉及到你作为一个工程师最最核心的价值和能力,就是你的经验,具体来说就是你做过的项目。
这块是 面试准备时的重中之重 ,应该作为 最高优先级 来对待。
有很多同学,做的项目其实挺不错,但是平时疏于总结,面试前也不准备,结果面试时支支吾吾,半天答不上来,白白浪费面试机会。
比如一个非常典型的项目经验的面试考察情景如下:面试官反复的追问项目的各个地方的技术实现细节,就想看看有没有哪个地方是有一定的技术难度的,可以体现出这个候选人的一些项目上的亮点。
但是呢,候选人说来说去,总是从业务的角度去说,就说有哪些子系统组成,分别是干什么的,如何交互的,看来看去都是系统业务的东西,就是没看到什么有技术含量的东西在项目里体现出来了。
如果出现上述的情况,那么这个候选人要拿大厂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,毫无亮点可言。
(图源网络,侵权删除)
END
扫描下方二维码,备注:“ 资料 ”,获取更多“ 秘制 ” 精品学习资料
如有收获,请帮忙转发,您的鼓励是作者最大的动力,谢谢!
一大波微服务、分布式、高并发、高可用的原创系列文章正在路上
欢迎扫描下方二维码,持续关注:
石杉的架构笔记(id:shishan100)
十余年BAT架构经验倾囊相授
推荐阅读:
1、 拜托!面试请不要再问我Spring Cloud底层原理
2、 【双11狂欢的背后】微服务注册中心如何承载大型系统的千万级访问?
3、 【性能优化之道】每秒上万并发下的Spring Cloud参数优化实战
5、 兄弟,用大白话告诉你小白都能听懂的Hadoop架构原理
6、 大规模集群下Hadoop NameNode如何承载每秒上千次的高并发访问
7、 【性能优化的秘密】Hadoop如何将TB级大文件的上传性能优化上百倍
9、 【坑爹呀!】最终一致性分布式事务如何保障实际生产中99.99%高可用?
10、 拜托,面试请不要再问我 Redis 分布式锁的实现原理!
11、 【眼前一亮!】看Hadoop底层算法如何优雅的将大规模集群性能提升10倍以上?
16、 亿级流量系统架构之如何设计全链路99.99%高可用架构
17、 七张图彻底讲清楚ZooKeeper分布式锁的实现原理
18、 大白话聊聊Java并发面试问题之volatile到底是什么?
19、 大白话聊聊Java并发面试问题之Java 8如何优化CAS性能?
20、 大白话聊聊Java并发面试问题之谈谈你对AQS的理解?
21、 大白话聊聊Java并发面试问题之公平锁与非公平锁是啥?
22、 大白话聊聊Java并发面试问题之微服务注册中心的读写锁优化
23、 互联网公司的面试官是如何360°无死角考察候选人的?(上篇)
24、 互联网公司面试官是如何360°无死角考察候选人的?(下篇)
25、 Java进阶面试系列之一:哥们,你们的系统架构中为什么要引入消息中间件?
26、 【Java进阶面试系列之二】:哥们,那你说说系统架构引入消息中间件有什么缺点?
27、 【行走的Offer收割机】记一位朋友斩获BAT技术专家Offer的面试经历
28、 【Java进阶面试系列之三】哥们,消息中间件在你们项目里是如何落地的?
29、 【Java进阶面试系列之四】扎心!线上服务宕机时,如何保证数据100%不丢失?
30、 一次JVM FullGC的背后,竟隐藏着惊心动魄的线上生产事故!
31、 【高并发优化实践】10倍请求压力来袭,你的系统会被击垮吗?
32、 【Java进阶面试系列之五】消息中间件集群崩溃,如何保证百万生产数据不丢失?
33、 亿级流量系统架构之如何在上万并发场景下设计可扩展架构(上)?
34、 亿级流量系统架构之如何在上万并发场景下设计可扩展架构(中)?
35、 亿级流量系统架构之如何在上万并发场景下设计可扩展架构(下)?
37、 亿级流量系统架构之如何保证百亿流量下的数据一致性(上)
38、 亿级流量系统架构之如何保证百亿流量下的数据一致性(中)?
39、 亿级流量系统架构之如何保证百亿流量下的数据一致性(下)?
40、 互联网面试必杀:如何保证消息中间件全链路数据100%不丢失(1)
41、 互联网面试必杀:如何保证消息中间件全链路数据100%不丢失(2 )
42、 面试大杀器:消息中间件如何实现消费吞吐量的百倍优化?
43、 高并发场景下,如何保证生产者投递到消息中间件的消息不丢失?
44、 兄弟,用大白话给你讲小白都能看懂的分布式系统容错架构
45、 从团队自研的百万并发中间件系统的内核设计看Java并发性能优化
46、 【非广告,纯干货】英语差的 程序员 如何才能无障碍阅读官方文档?
47、 如果20万用户同时访问一个热点缓存,如何优化你的缓存架构?
48、 【非广告,纯干货】中小公司的Java工程师应该如何逆袭冲进BAT?
50、 【金三银四跳槽季】Java工程师如何在1个月内做好面试准备?
作者:石杉的架构笔记 链接: juejin.im/post/5c263a… 来源:掘金 著作权归作者所有,转载请联系作者获得授权!
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 万字 Java 知识地图助你成为 Offer 收割机
- 【行走的Offer收割机】记一位朋友斩获BAT技术专家Offer的面试经历【石杉的架构笔记】
- 从简历被拒到收割今日头条 Offer,我花了一年时间
- 从简历被拒到收割今日头条 offer,我用一年时间破茧成蝶!
- WWDC的31个年头,来点不一样的!听说库克还忍不住要收割13岁以上程序员
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
写给大家看的算法书
【日】杉浦 贤 / 绝云 / 电子工业出版社 / 2016-6 / 59.00元
算法这个词对于非计算机从业人士而言,似乎就是晦涩、神秘的代名词。其实,算法在日常生活中随处可见。做饭用的菜谱是一种算法、查字典的方法是一种算法、给期中考试分数排名也用到了算法。事实上,算法可以说是这个信息爆炸的时代所依存的重要基石之一。 《写给大家看的算法书》对于理解信息处理的基础——算法而言,是一本非常优秀的入门读物。作者采用大量生动的类比,配合简洁易懂的配图,深入浅出地讲解算法,极大地拉......一起来看看 《写给大家看的算法书》 这本书的介绍吧!