程序员面试攻略:面试中的技巧(付费资料)

Posted 喜欢猪猪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序员面试攻略:面试中的技巧(付费资料)相关的知识,希望对你有一定的参考价值。

形象和谈吐

面试过程很短,对一个人的认识和了解也是很有限的。如果你的技能一般的话,那么就需要 加强你的形象和谈吐了。总之,你不能内在和外在都不要吧,最好是内在和外在都很好。

形象方面,最好还是穿工作便装,休闲的也没事,但是要让人感到干净、整洁。不要有异 味,不要邋遢——头不梳、胡子不刮、衣服也皱巴巴的,还是要修修边幅的。因为有 HR 的人会来面你的,HR 一般都是女孩子,所以不要吓到她们。

另外,保持微笑,表现得热情、开朗和幽默是非常重要的。每个人都喜欢和开朗风趣积极向 上的人相处。经常微笑,表现出自己的热情,适当开开玩笑,自嘲一下,会让人觉得你很容易亲近。交谈时千万不要像挤牙膏一样,别人问你一句,你答一句,要把完整的前因后果讲完。别人问你个事,你就多分享一些这个事中的酸甜苦辣,把故事讲得生动有趣点儿,能逗笑 HR 妹子最好(但不要撩)。

说话的时候,要看着对方,一方面这是对对方的尊重和礼貌,另一方面,这也是一种自信。

就算没有面好,也不要低着头,又不是做错了什么事。有什么事说不清楚的,不要犹豫,该画图画图。对于比较复杂的面试官听不懂的问题,要变换不同的方式来描述。

面试官问的问题,你要给出充足的细节,千万不要让面试官不断地追问,那样就被动了。你问我解决过的最难的问题是什么,我就把这个问题的来龙去脉和其中的各种细节给你滔滔不绝地讲个遍。当然,也要讲得清楚干净有条理,不要东拉西扯的,也不要云山雾罩的。这些

表达和谈吐还是要多练!

最好的训练就写作,你写得多了,能把复杂的问题描述清楚了,自然也会体现在语言组织能力上了。

答不出来

面试中有一些问题很难,但是不要放弃,要不断尝试。很多时候,面试官并不期待你能在很短的时候内解出一道难题,他只是想看一下你遇到难题时的态度和思维方式。如果你能证明给面试官看,你解决问题的方向和方法是正确的,就算是没有找到答案,也是很不错的。因只要方向走对了,剩下的就是时间问题了。

如果实在解不出来,或是被问了不懂的知识性问题,那么就直接说不懂就好了。记下来,回去多看多练,下次记住了就好。

另外,对于没有答上来的问题,有的人会在面试后请教一下面试官。但是我觉得更好的方式是,问面试官要个他的邮箱或微信,回去后,努力搞懂,举一反三,然后写个东西再发回去。这样做是有可能让你起死回生的。多少可以暗示对方:“你看,我有不懂的,但是我能工夫很快就搞懂了,你看我的学习能力还不错哦。你就不再考虑一下了吗?”

尖锐问题应聘的时候,你有可能会被问到几个尖锐的问题,这时你要小心做答。一般来说,你会遇到这几个常见的比较尖锐的问题。

你为什么要离开现在的公司?这种问题一般都是来问你的离职动机的,招聘方有理由相信,你是怎样离开前东家的,就会怎样离开我。另外,从这个问题上,招聘方想了解你真实的动机,对工作的想法和个人的喜好。一般来说,永远不要说之前公司的坏话,最标准的外交词令是:“我离开现有公司的原因是我太喜欢你们公司了”。

这样的回答,对于招聘方来说毫无破绽可言,而如果你开始抱怨你现在的公司了,很可能会引出很多问题把你问到最后都抬不起头来。当然,你也可以说前公司的问题,比如:自己心爱的项目被公司废弃了、公司转型了、公司业绩下滑了、在现有的公司没有成长空间了…… 这些都还是可以说的。

说一下你的缺点?并给出几个例子。这个问题也是很难很难回答的。但是,我想说,人无完人,是个人总是会有缺点的,但是有的缺点也有点不好意思说。所以,这个问题是比较难的。这个问题不能说套话,说套话会显得特别假。这个问题还是要说实话,也不能说一些不痛不痒的小毛病,这样会让他觉得你避重就轻。

只要你认识到任何性格的人都有问题,那么这个问题你就好回答了。比如,对我来说,我个是比较着急的人,急性子,而且是个做事的人。所以,我最大的问题就是在推进一些事的时候,会忽略别人的感受。当压力变大的时候,我甚至会说出一些别人难以接受的话(俗话说的情商为零)。这个没什么不好意思承认的,我这么多年来也在改进自己。

总之,我想说的是,我们每个人都应审视一下自己,思考一下自己光明面的后面。而回答这个问题的最佳方法,就是想想附着在正面事件上的阴暗面,那就是你的答案。比如,我对事情的要求太高了,跟我在一起工作人的压力太大。我太内向了,所以别人和我沟通起来有点费劲。我太过关心团队了,所以,有时候会忽略了项目成本和时间进度…… 最后还要补一句,我知道我的缺点,我也在努力改正,我正在通过什么样的方式改正。这非常关键,因为这基本上是面试官最喜欢看到的答案了,就是你不仅能正视自己的缺点,而且还能不断地改正

另外,与这个问题相对应的是,说一下你的优点。这个问题是比较坑的,你的优点是需要用证据来说明的。比如,我通常的回答是,我的优点就是学习能力强,因为我掌握的技术面很广,而且,我什么样的技术都学,比如最新的 Cloud Native 技术。作为后端人员我还学前端方面的技术如 React.js 和 Vue.js,这一切都来源于我扎实的基础知识……

回答这个问题的时候,一般都会反衬出你的价值观,HR 就是想了解你的价值观。比如,我比较踏实,我想把技术一直做到老。再比如,我有韧性,我受过哪些挫折、失败、不 公、无奈和无助,我没有当逃兵……

你为什么换工作换得这么勤?很多公司的 HR 都会对应聘者频繁换工作持比较负面的评价。频繁换工作在职业生涯中真不是一件好事,因为用人方会觉得要么是你太不踏实了,要么是你太不行了。所以,工作不要换得太频繁。但是如果换得太频繁了,我给你一个建议,在简历里面写上离职原因。

另外,在面试时被问到这个问题时,你需要给出合理的解释,以消除用人方的疑惑。怎么给出合理的解释呢?一方面,你还是需要诚恳一点儿,另一方面,你在解释时需要承认频繁换工作也不是自己想的,自己何尝不想在一份工作上干得时间长一点儿。

无奈,要么是公司有变化,要么就是自己没选好。一方面表达自己也厌倦了频繁换工作这种事,另一方面,你要把这个话题引到另外一个方向上——什么样的工作自己可以干很久?自己所期望的工作内容和工作环境是什么样的?这样就转而去谈你所向往的工作内容和环境了,并再表达一下在这样的工作环境下,是可以很长时间做下去的,并愿意和公司一起发展。

但是,先不要说得太理想了,不然,用人方也会觉得自己是做不到的。正确的说法是,自己并不担心公司有各种各样的问题,只要有一起扛事的队友一起拼搏,这才是最关键的。

你在一家公司呆了接近 10 年为什么没有做到管理层?你又是怎么保持竞争力的?一般来说,不想做管理的程序员也挺多的,在技术的方向上勤勤恳恳深耕细作,会是一个非常难得的优秀工程师。专注于技术,不分心,不断地在技术上的深度和广度上钻研,这就是保持竞争力最好的方式。所以,其实这个问题挺好回答的。

但另一个更难的问题是:你工作满 5 年了,为什么还不是一个高级程序员?对于国外的顶尖公司来说,如果你有 5 年的工作经验,但还不能胜任高级程序员(Amazon 的SDE2)的职位,那么你这个人就基本会被 pass 掉了,包括在职的员工也是一样的。于是,对于工作年限超过 5 年的程序员,如果你还不能证明你可以独当一面,你的能力能够驾驭复杂难题,那么国外的顶尖公司都不会问你这个问题的。

国内的公司可能会问你这个问题,对此,我个人认为比较好的回答是要分几方面来谈。一方面,过去因为什么原因耽误了些时间(环境因素、客观条件因素),另一方面,要表示同样也有主观因素,不然显得有点找借口的感觉,不诚恳。

接下来,要表明自己心里面也比较慌(表明自己不用别人提醒可以自己意识到自己的问题),所以,近一年来一直在学习,罗列一下学过哪些东西,最好还有学习目标和学习计划(表明自己除了有意识外,还有行动)。当然,厉害的面试官会不断地追问你一些细节,以此来确定你没有说假话,对此,你要有充足的准备。

你为什么换了一个方向?你觉得你有什么优势? 这个问题其实并不难回答,实话实说就好了。但是不要让招聘方感受到你浮燥的内心,或是朝三暮四的性格,更不要让人感觉到你像“小猫钓鱼”那样一边不行又来搞另一边。

我觉得回答这个问题有两种方式:一种是非常自信的回答——“我从来没有改变我的方向,因为种种原因,我没能得到我想要的方向,虽然现在很残酷,但是我一直都没有放弃我的方向,我一直都在努力学习……”如果你要这么回答了,你就要真的是这样的,在新的方向有所研究和建树,不然会被识破的。另一种回答则常规一点,首先说明一下,自己的兴趣爱好,为什么这个方向要比之前的那个方向更适合自己。可以用几个例子来说明,但其中要有一些细节,比如,自己试过这个新方向 ,发现干得比原来那边更好,更容易出成绩,自己的兴奋点更大,所以觉得新方向更适合自己。然后,承认换一个方向短期内并没有优势。但是,因为自己的某某特质,比如,学习能力强、勤奋、聪明等特质,未来一定是可以胜任的。

但是,你要用证据证明你的学习能力强,你比一般人勤奋,比一般人聪明。不然如果对方追问下去,会让你破绽百出的。总之,回答这样的问题,需要一定的证据作为补充,而且还要伴随着以降职降薪为代价。所以,一般来说,选定方向最好不要再变了,如果一定要变的话,你也要有必胜的信心和先下后上的心态,而且这些信心和心态要让招聘方看到。

对于技术的热情或初心体现在你生活和工作中的哪里?这个问题其实是想了解一下你的性格,以及对生活和工作的态度。这个问题会伴随着很多细节上的追问。所以,你要小心回答,而且是要带感情的,但一定要是真实的。

一般来说,热情和初心不是停留在嘴上的,而是要表现在行动上的,你需要给出几个曾经发生过的示例。这些示例可以是:你死磕某个事解决某个难题不认输的精神;你坚持做某件事,无论风吹雨打,无论有没有激励;你在某个逆境中依然没有放弃依然努力的态度;

在面对压力时,你勇于承担责任的精神;你严谨细心、精益求精的做事风格;面对诱惑能沉得住气,不浮躁……

总结一下,对技术的热情或初心,需要表现在这么几个特质上:执着、坚持、坚韧、不服输、担当、不妥协、不浮燥……我说一句,我相信每个人或多或少都会有这些特质,这是你的亮点,要小心呵护。不然,你跟一条咸鱼就没什么两样了。

你觉得你比男性程序员有什么优势?这种问题一看就带有性别歧视。我的建议是,首先从更高的维度教育一下对方,放出观点,性别不能算优势,人与人的不同和差距是体现在工作技能和态度上的。然后,把回答转向到自己的工作技能和工作态度上来,随后从诸如想象力、品味、沟通能力、严谨细心、承受压力等方面说明自己的长处。

当然,能问得出这样问题的公司一定不是好公司,千万不要去了。所以,可以放心地怼回去。需要注意的是,职场中的怼人是要用数据和事实打脸的。

比如:世界上第一个程序员就是女的叫 Ada,她不仅预言了通用计算机的可能,还发明了世界上第一个计算机程序。世界上第一台通用计算机 ENIAC 的编译和部署工作是由 6位女程序员组成的团队完成的。把阿波罗送到月球的程序员也是女的,叫 MargaretHamilton。微软 Halo 游戏引擎的主程也是女的,还是中国香港人,叫余国荔……另外,在中国的运动比赛上,女性运动员比男性运动员的成绩要好……

在各个公司,我看到更多的男性除了在使蛮力和搬砖上比女性要强,也没什么其他长项。

如果认为写程序是劳动密集型的工种,当然是男性比女性好用。对了,你们这里是劳动密集型的公司吗?最后,我认为,就对女性尊重方面还是国外公司做得好。所以,建议女程序员还是要去国外公司工作。最后,我想说一下,回答尖锐问题你会有两种方法,一般是比较官方的,像外交或是政治词令,另一种是比较诚恳的、真实的。虽然两者都可以,但是我觉得后者更好一些。因为那是能打动人的。对于一些不礼貌的问题,我觉得你要站在更高的维度教育他们,这样才会显得他们的 low。

结尾问题

一般来说,面试结束的时候,都会问你有没有什么问题。不要放弃这个机会。

如果你面得比较好,这个时候可以问几个尖锐的问题,这样有利于后面谈 offer 和岗位(抓住机会反转被动为主动)。比如,我就问过国外某一线公司的面试官下面两组问题:

你们公司有多少一线开发经理还在写代码?你们的一线经理都没有时间来写代码了,不知道细节怎么做好管理?另外是不是说明你们公司有大量的内耗?

任何公司都有好的有不好的,你能不能分享一下你最喜欢这个公司的地方和最不喜欢的地方?

基本上来说,面试官都会被我问住,然后开始语塞。能让说英语母语的老外在我这个英文一般的人面前说不清话,我还是很满足的。哈哈哈。当然,也不一定是非要像我这么尖锐地问问题,你也可以设计几个柔和一点儿的问题。总之,问这样问题的目的是,暗示一下方,我来不来还不一定呢,也别想压低我的 offer,你们公司也不是什么都好,要想让我来,得再加点……(嘿嘿嘿)

如果你面得一般,这个时候你也可以问些加分的问题。比如:目前贵公司或是贵团队最需要解决什么样的问题?我能帮贵公司做些什么?能不能给我一些资料我先了解一下,这样 我后面如果能进来,就能上手更快一些了。因为你面得一般的话,面试官会比较犹豫和纠结,此时你需要让面试官不要犹豫,所以,你可以表现得更加热情和主动一点。你看,竟然一副通过面试明天就要上班的“无耻嘴脸”也会为你加点分的……(哈哈哈)

如果你面得很不行,基本挂掉了。这个时候,也要问问题。但最好问一下面试官对你的评价,并且让他指出你的不足和需要改进的地方。面试本来就是一次经历和一次学习,你也可以把其当作是一种受教育的过程。所以,不要放过自己可以成长的机会。通过面试官给

你的评价,你日后就知道自己需要努力的地方和方向了。这是多好的一件事儿啊。

程序员面试攻略之基础技术题准备秘籍


“有问有答”栏目,是程序视界提供的免费咨询入口。想参与,可以这样:


  1. 发邮件给 foruok@163.com,标题注明“有问有答”。

  2. 描述你的困惑或者问题。


我每周会慎重回答一个问题并整理成文章,周四发布在订阅号程序视界内。


如果觉得这种方式较为麻烦,或者你的问题较为复杂,可以使用“在行”小程序,搜索“安晓辉,付费约我一对一咨询。

安老师,你好:


在面试面谈过程中,总是会被问到一些基础性问题。如Java面试经常会问到下面这类基础问题:


能否谈一下,悲观锁和乐观锁?

能否谈一下,线程池?

能否谈一下,hibernate二级缓存?

hashmap?

……


Hibernate、线程池等这些基础知识,以前培训、看书的时候都学习过,在学习的过程中也写过demo,当时感觉也理解、记住了,但是,面试的时候,问到这方面问题,还是说不清楚、答不好,有些细节方面的地方忘记了。面试的时候,有些基础题也能回答,但面试官再往深层次的追问几个问题,就答不上来了。


在准备面试的时候,这类基础性的问题还非常的多,网上就有些牛人收集几千道题(Java面试题1000道),还附有答案。

但个人感觉仅仅看懂、背会这些题目的答案是肯定不够的,这经不起面试官的追问。可如果一个个题目深入下去研究、去理解原理,上千道题目这样的数量,又会让我感觉到时间不够用。


我想问:在面试的时候,怎么高效准备这类基础性问题?

很遗憾,基础知识类问题的准备,我不知道有什么轻松、快速、高效的法子,如果你找到了,回头来告诉我啊。

我接下来说的,都不轻松,可能阅读过程中感觉会没那么舒服,但这些策略,都是行之有效的,愿意挑战的话,就做好准备开始吧。

1、结硬寨打呆仗

基础概念性的问题,往往是有参考答案的,有对错的。比如面试官问你“哪些容器是线程安全的”、“final在Java中有什么用”,答案基本就是固定的。

这一类问题,和我们上学时复习考试,道理差不多,想要很好的答出来,最基本的方法,是下面这些:

  1. 复习知识点
  2. 看面试题解析
  3. 刷笔试题

这些是笨功夫、硬功夫,跳不过去的,得扎扎实实做。这就好比考试,学期开始学的东西,期末时,肯定要走一遍复习流程,用各种方式反复理解、记忆。

2、三大策略提升准备效率

当然准备基础概念题目时也有一些优化策略,比如:

  • 80/20法则
  • 关联记忆
  • 互动演练

80/20法则用在这里,意思是,挑出最常被问到的那些题目,花更多功夫去记忆、练习、问答演练。比如你可能看到了1000多道题,但实际上只有200道经常被问道。

关联记忆,意思是,把不常用的知识点和你经常用的知识点,想办法关联起来,以熟悉来索引陌生。比如,你用过HashMap,HashMap是非线程安全的,那从这个点出发,就有两种关联方法,1)非线程安全的容器还有哪些,就可以找到WeakHashMap、TreeMap等等,2)线程安全的容器有哪些,就可以找到HashTable、Vector、ConcurrentHashSet等。

一旦知识点彼此之间关联起来,记忆就会很快,复习也很快,因为牵一发就可以动全身,从任意一个熟悉的知识点出发,就可以拎出一串来。

互动演练,指的是找个人向你提问,彼此来回问答。这种方式有两个好处,一是与面试场景像,可以练场感;另一个是演练对手熟悉的知识点和你不一样,他问的点和顺序,往往和你预期的也不一样,这样就能打通那些你因为不熟悉而下意识回避的知识点。

3、深入一层关注如何应用

知识类问题,面试时常会遇到两个层面的提问:

  • 某某是什么,比如悲观锁是什么、乐观锁是什么
  • 某某的应用,比如什么场景下用悲观锁,具体怎么用,举个例子

所以你单单记忆知识点,还不够,还要考虑这个知识点在项目中的应用,问问自己下列问题:

  • 它是怎么用的

  • 为什么这么用

  • 为什么不那么用

  • 用了之后有什么效果


对于那些你经常在项目中用的知识点,“应用”这个环节,你按上面的问题清单回顾一下,反思一下就能心中有数。

对于你仅仅知道但很少在项目中用的知识点,除了按照书上或者别人总结的应用经验了解外,也可以挑常被面试官提到的知识点做做小练习,然后再结合上面的问题清单反思它是怎么用的。

4、你的付出必定是值得的

求职找工作是大事,对你的职业发展、经济收入、生活状态,都有非常非常大的影响。这么重大的事情,值得认真对待,值得投入时间和精力。

假如时间不够用,是有方法可以挤一挤的,比如早上早起1个小时,下班路上看看、听听,晚上吃饭快一点,少刷会手机……

想想看,要是你努力准备了两个月,获得了理想的Offer,进入了一直想去的公司,月薪增加了50%,是什么感觉?

那时你一定会感谢你现在的付出,你会觉得,一切都是值得的。

退一万步讲,就算你这次为这家公司的准备,没能收到效果,但你的付出,让你巩固了的知识、结构化了体系,也是值得的。同时,你这次准备的基础知识,面试下一家公司,也很可能用得上,努力并不会白费。

你看,无论如何,你的付出,都是值得的。请相信,你在今天所有的投入,就是你深埋地下的一粒粒种子,时候到了,它们必将发芽,生长,与你一起绽放。


活动预告


我的新书《副业赚钱之道:从0到1打造多元化收入》经历各种波折,终于开始印刷了,预计双12会上市销售。书的内容围绕如何寻找副业方向、如何规划、如何持续行动展开,不谈捷径,提供思维、方法和工具,帮助你扎扎实实付出努力打造可以赚钱的副业。

为了更好的把副业实践落地,我准备建立一个《副业赚钱之道》共读讨论群,这样大家一起碰撞,砥砺前行,更容易有成果。

想要入群的小伙伴:
  • 图书上市后我会通知购买(第一批是签名版哦),发送订单和手持图书照片(不用自拍,只露手和书即可)

  • 进正式的共读群,随时讨论


买一本书,链接作者,链接一群有能量的人,获得无限次提问和讨论机会,来吗?

以上是关于程序员面试攻略:面试中的技巧(付费资料)的主要内容,如果未能解决你的问题,请参考以下文章

get这些面试沟通技巧,就算职场新人也不担心面试泡汤了

Android开发六年收获阿里offer定级P7,多亏在阿里P8师兄给的攻略面试技巧以及学习笔记!!!

面试与工作差距大,程序员从准备到拿Offer全攻略

面试与工作差距大,程序员从准备到拿Offer全攻略

Android程序员入职前复习攻略(附:高级开发面试题)

美国大数据工程师面试攻略