又到了一年金三银四,回想到不少年前我刚参加工做时的面试经历,那时都是呆呆地等着面试官问问题,被问到一些本身并不熟悉的问题时要不就是思考半天也切不中要点,要不就只能无奈地回答并不清楚了。其实无论是经验不足的初级开发,仍是面临更高要求的资深开发,在面试上都会有同样的困扰:如何在掌握的知识有限的状况下,完成好一场高质量的面试呢?java
本文最适合如下几种状况的同窗参考:程序员
知识面有限的初学者面试
但愿首次加入大公司的开发同窗数据库
面临技术深度要求的开发同窗编程
虽然文中主要之后端开发为例介绍技术面试的准备方法,可是和其余岗位的面试也有类似之处,其余朋友也能够做为参考。后端
小黄去年刚从计算机专业毕业,可是感受对技术掌握得还不够,就又报名参加了一个培训班,年末刚从培训班毕业,怀揣着精心准备的简历,想到杭州闯一闯。今天上午到了一家装修还不错的公司面试,感受这家公司窗明桌净,办公桌前都是Mac笔记本加双屏显示器,比昨天面的那家外包公司可好多了,心想必定要好好发挥抓住这个机会。性能优化
老王工做五六年了,今年刚从一家不小的公司出来,公司效益很差,年末裁人了,不幸老王在年前的最后一次裁人名单中中奖了。虽然短时间内也没什么太大的经济问题,可是以前拿到offer的都是一些没上轨道的小公司,跟以前待过的公司比总感受是明珠暗投不太甘心。此次面试的公司看上去还满正规的,若是能进去,就算不涨薪,可是心理上落差老是小一点。架构
小黄循序渐进地说完了本身准备的项目介绍,而后面试官就照着简历问了起来。“你熟悉MySQL数据库?”,“对”,“唔...那你能说说MySQL经常使用的有哪几种存储引擎吗?”,“啊?什么是存储引擎?”。小黄心想,昨天复习了面试宝典里的数据库索引,老师说这个是要点,面试官怎么不按常理出牌呢。“你简历上写了使用过Kafka消息中间件?”,“嗯,对的”,“那你能说说Kafka的拉模型和其余推模型消息中间件的区别吗?”,“...”,“今天面试就到这里,有后续的话HR在一周内会联系你的”。并发
老王在隔壁的会议室里坐了下来,面试官让老王先介绍一下本身最近比较有表明性的项目,老王大概说了说本身这两年作的一个平台的功能。面试官问:“在这个项目过程当中你有碰到什么印象比较深的技术难点或者业务难点吗?”,老王想了一想,感受一会儿有点想不起来。面试官继续问:“刚才你介绍的项目里有说到XXX功能,那在YYY异常状况下若是处理ZZZ问题呢?”。老王心想之前也没考虑过这个,那我就直接现场推敲一下吧,“这里要先这样,对了,那里要那样,不对,这里还有一种状况”。十分钟过去了,老王还在原地兜着圈子,并且丝毫没有停下来的意思。面试官只能打断老王换了一个问题:“那你能介绍一个你有过深刻了解的技术吗?”,老王:“我好像这几个都了解一点”。“那关系型数据库中的汇集索引和非汇集索引有什么区别呢?”,“好像这两个的存储方式有点不一样,非汇集索引开销会大一点”,“那么为何非汇集索引开销会比较大呢?”,“这个问题好像要涉及操做系统之类的知识,有点太深了”。40分钟后,老王也结束了面试。分布式
为何面试官总是会问一些莫名其妙的问题?我怎么可能了解计算机方面的全部问题呢?为何他问得这么深,写代码的时候能有什么用?
以前我在一次失败的面试以后老是感受有点不舒服,我感受个人水平也是挺不错的,为何到了面试就总感受发挥不出,并且总是被“虐”呢?下面咱们一块儿来想一想办法。
如何完成好一场高质量的面试?这是咱们在文章一开头提出的问题。首先咱们要知道,咱们掌握的知识必定是有限的,无论学到了多少,仍然还会有不知道的知识。特别是对技术深度有要求的资深开发岗位,想要面面俱到几乎是一个不可能的任务。可是为何有些人就能很轻易地拿到offer呢?
通常技术面试都会分为四个部分:项目介绍/自我介绍、技术能力问答、综合能力问答、反向提问环节。而其中前三个部分对面试的成败影响最大。首先,面试通常都会以项目介绍/自我介绍来进行切入,其实技术面试的自我介绍主要也是介绍本身的项目经验。而后会穿插着对技术能力和综合能力的评估,通常这一步都会由以前的项目介绍引伸出来。
通常来讲,面试官在每一个环节但愿了解的主要是:
一、项目介绍——基本背景、擅长的业务领域、解决问题的能力、技术层级
二、技术能力问答——技术深度、分析能力、抽象能力、学习能力
三、综合能力问答——工做素养、协做能力、学习素养
虽然看上去眼花缭乱的很是多,其实核心关注的就是几点:技术好、好合做、主动性强。
对于大部分面试官来讲,通常也不会作太多事前准备和细密的过后分析,大多都是靠一个大概的印象来作出判断的。因此面试的一个诀窍就是:突出亮点。一旦面试中有让人印象深入的亮点,其余方面只要不是太差通常面试就十拿九稳了。
可是不少读者应该和我之前同样,以为本身好像也没什么亮点啊,总感受没什么特别的可说。可是经过总结和准备,我相信每个人均可以有本身的亮点,并且是不少个亮点。
首先,咱们能够经过总结来获得一份优秀的项目介绍。关键点就在于不能光介绍项目完成的需求,由于这些对于面试官来讲并无什么价值,毕竟咱们面的是开发岗位不是产品岗位:)在项目介绍中,咱们应该明确描述咱们在项目中解决的问题,包括技术难题和业务难题。如何表述能够参考一下如今流行的STAR法则,即在什么状况下(Situation),面临一项什么样的任务(Task),采起了什么样的行动(Action),达到了怎样的结果(Result)。这样的表述能够很好地展现本身的解决问题能力,充分显示了本身在工做中的主动性。
而后,咱们还能够经过准备来深挖几个在工做中比较重要的技术点做为“技术亮点”展现,这指的不是仅仅经过“面试宝典”来准备的肤浅的理论知识,而应该是能作到真正的言之有物、切中工做要点的实践性的深刻知识点。这一步是本文全部面试准备技巧中惟一对技术水平有要求并且是要求很高的步骤,技术水平不够的朋友可能发愁怎么准备,技术水平比较高的朋友可能又会疑惑到底什么是实践性的深刻知识点。你们不用担忧,我已经为你们准备好了学习材料或者说是参考样例。你们能够加个人后端架构交流学习群:854613173,里面已经为你们准备好了面试和架构学习视频资料,欢迎你们加群讨论面试问题与技术上的交流与学习。经过学习或参考工做经验较丰富者的总结文章咱们能够更容易地得到本身的技术亮点。
实践性的深刻知识点的最大特色就是:工做中会使用且能够层层深刻造成问题链条。关系型数据库是后端开发离不开的技术,而数据库索引又是程序中的SQL语句执行效率的关键,你们能够经过我以前编写的一系列数据库索引相关的文章来了解一个实践性的深刻知识点到底长什么样。后续我也会不断更新更多浅显易懂的高阶技术,有兴趣的朋友能够持续关注一下。下面的文章主要以知识点讲解为主,须要具体的一系列相关面试题的朋友能够在文后留言,若是人数比较多我会考虑另外写一篇文章讲解具体的面试题并连接到对应的知识点。
可是有了准备以后,咱们怎么能防止面试官问出不少超出咱们准备范围的“奇怪”的问题呢?这就须要咱们有效地引导和填充整个面试的过程。通常一场技术面试会在40分钟到60分钟,如何完成好一场技术面试的关键就在于如何用亮点来充满这40到60分钟。
通常一个技术亮点会包含一系列层层递进的内容,因此能够问出大概三到五个问题。若是发现面试官不知道应该如何追问,那么你能够简短一些地把后续知识点一次性介绍完。通常这些问题都说完时间就过去了十到十五分钟,而项目介绍和相关的问答会占用大概10分钟。若是咱们准备了两个技术亮点,加上先后的一些非技术性问题和反向提问,那么基本上一场面试就圆满地结束了。
那么如何让面试官问出本身想问的问题呢?这就须要咱们准备好一个“剧本”了。
首先,面试的开场必定是项目介绍,能够将咱们准备好的技术亮点与项目介绍中解决的技术难题结合起来,这样面试官基本都会根据这个点继续往下追问。
其次,咱们还能够对简历内容进行特地的编排来诱导面试官主动提出咱们准备好的问题。例如在简历中把擅长的技术放在更靠上的位置突出显示,而且增长更多的深刻解释。这样不只能够引发面试官的注意,还能使简历显得更有技术含量,更容易经过筛选。
最后,还能够厚着脸皮主动提出本身对某一个领域比较了解,尝试询问面试官对这一部分有没有兴趣。
经过上述这三点,基本上80%以上的面试就可以顺顺利利地圆满完成了。
在掌握了面试的技巧以后,咱们再来看看以前小黄和老王到底犯了什么错误,咱们也能避免踩坑。
初级开发小黄的问题:
一、惜字如金,没有充分回答问题;
对于面试官提出的“是否用过”“是否了解”这样的问题,应该补充上可以证实本身是内行的解释。
二、等着面试官提问,没有主动地引导。
咱们应该主动将问题引导向本身擅长的方面。
资深开发老王的问题:
一、项目经历没有准备;
只讲了项目的功能,而不讲过程当中遇到的业务难点和技术难点。
二、过度纠结细节,可是表述又不流畅;
三、问题抓不住重点,从细节开始推敲,反反复复。
表述复杂问题时应该从宏观到微观。先从比较高的层次入手,划分大的模块,肯定模块间的交互,而后再逐个模块地细化细节。这样不只本身可以更容易地解决问题,并且面试官也更容易理解,避免发生即便回答了正确答案可是面试官也不认同的状况。
学习源码中的的经典设计场景,看看大牛是如何写代码的,阅读源码,解析源码是提升核心竞争力最基本能力。
迎接高并发大数据的挑战,不管是从知识的深度仍是广度,我列的分布式架构知识总汇都是目前互联网最前沿最新潮的技术。
微服务是近几年最热门的话题。做为技术人,想要成为架构师,不断的学习新的技术,了解新的技术走向微服务是必不可少的知识。
当系统愈来愈庞大,业务愈来愈复杂,如何提高性能,不断优化系统性能就是须要不断思考的问题。你能面对一个每天宕机?内存溢出的系统吗?
看似简单的并发编程,并非不少人都真正深刻透彻的理解其底层原理。当面试若是被问到并发编程相关的内容。你可以轻松的讲下列的并发编程的知识点讲清楚,是可让面试官仰望你的!最牛逼的面试不是征服面试官,而是让面试官仰望你。
2018已通过去,2019还想一成不变吗?拥抱变化,突破瓶颈,想要学习Java架构技术的朋友能够加个人群:854613173,群内每晚都会有阿里技术大牛讲解的最新Java架构技术。并会录制录播视频分享在群公告中,做为给广大朋友的加群的福利——分布式(Dubbo、Redis、RabbitMQ、Netty、RPC、Zookeeper、高并发、高可用架构)/微服务(Spring Boot、Spring Cloud)/源码(Spring、Mybatis)/性能优化(JVM、TomCat、MySQL)
做为一个平民程序员,我不断的总结技术经验,实时学习最前沿的技术,成功入职阿里,你呢?金三银四,你准备好了吗?