求职老司机私藏秘籍,助你春节后斩获心仪offer!

博文小编

2025-03-03


博文视点
每年春节过后,都堪称求职的黄金佳期,在求职这场竞赛中,如何脱颖而出,成功斩获心仪的 offer,成为每一位求职者亟待思考的问题。这就要求我们必须做好充分的准备,从求职材料的精心打磨,到面试技巧的反复锤炼,每一个环节都不容小觑。通过本篇文章你将了解如何优化简历、哪些词语要慎用、项目经验应该如何写等等。

面试官为什么要考察算法

一个面试环节可能只有一个小时,面试官需要在短时间内快速考查一位面试者的编程水平,其实是比较困难的。很多时候,不仅面试者不喜欢面试,而且面试官也不喜欢面试。因为面试官要挖空心思出一些面试题,既要控制面试的时间,又要客观地考查面试者的真实技术水平,这是非常难的。
一场面试下来,对面试官和面试者的心力和体力都会带来巨大的消耗。而算法题目是短时间内考查面试者计算机思维和代码能力的最好的方式,算法问题在面试中可以将面试官对面试者的主观看法带来的影响降到最低,更容易形成标准的流程。任何大公司在招聘员工的时候,都需要一套衡量人才的标准,而算法题目是大公司面试中必考的题目类型。
很多工作多年的资深程序员在面试时往往会栽在算法题上,有的人不屑于在面试前去练习算法,这些资深程序员更希望展现出自己的项目经验和解决实际问题的能力。
虽然重视项目经验没错,但忽略基础算法能力就有问题了,相信很多人听说过关于Max Howell(Homebrew的作者)的故事——Max Howell在Google面试,但Google拒绝了他,给出的答复是:“虽然我们90%的工程师都用你写的软件,但抱歉我们不能聘用你,因为你无法在白板上写出反转二叉树。”

这个事件在业内引起了轩然大波,人们开始讨论考查算法的必要性。
这么多年过去了,算法面试依然是互联网巨头招聘时的硬性条件,这也充分说明了数据结构与算法不仅是名企面试行之有效的招聘手段,也是程序员必备的基础技能——既是程序员的内功,也是编程的基础。
对于没有项目经验或者项目经验很少的应届毕业生,对数据结构和算法的掌握程度几乎决定了一次面试的成败。

技术人优化简历的实用技巧

程序员的简历力求简洁明了,在设计上不要过于复杂。对于应届毕业生,一页简历就够了,对于社招人员,两页简历便可。
例如,一些应届毕业生会在简历中介绍很多参加校园活动的内容。如果面试的是技术岗位,那么这些内容最好一笔带过。
1.谨慎使用“精通”
应届毕业生在写简历的时候,切记不要写“精通”某语言,推荐写“熟悉”或者“掌握”。但一些程序员可能仅仅使用Go或者Python写了几个Demo或者只了解一些语言的语法,就直接在简历上写了“熟悉C++、Java、Go、Python”,这也是大忌。如果C++学得更好一些,那么建议写熟悉C++,了解Java、Go、Python。
词语的强烈程度:精通 > 熟悉(推荐使用)> 掌握(推荐使用)> 了解(推荐使用)。
一旦我们写了熟悉某种语言,该语言就一定是面试中考查的重点。例如,写了“熟悉C++”,那么继承、多态、封装、虚函数、C++11的一些特性和STL就很有可能会被问到。所以,简历上写了熟悉哪一种语言,在面试前一定要重点复习相关知识。
2.拿不准的内容绝对不要写在简历上
不要为了使简历上看上去很丰富,就写很多内容上去,内容越多,面试中的考点就越多。在简历中突出展示自己技能的几个点,而不是面面俱到。想想看,面试官一定是拿着你的简历开始问问题的,如果只是因为想展示自己会得多,就把很多内容都写在简历上,那么等于给自己挖了一个“大坑”。
例如,仅仅部署过Nginx服务器,就在简历上写“熟悉Nginx”,面试官可能一上来就围绕着Nginx服务器的原理问很多问题。如果招架不住,然后说:“我仅仅部署过Nginx,底层实现都不了解。”这样难免让面试官对你有些失望。
同时,尽量不要在简历上写诸如“代码行数10万+”这样的内容,这就相当于提高了面试官对你的期望。首先“代码行数10万+”无从考证,其次这么写相当于告诉面试官“我写代码没问题,你就尽管问吧”。如果简历上再没有侧重点,那么面试官“铺天盖地”地问起来,恐怕面试者回答的效果也不会太好。
3.项目经验应该如何写
不要简单地描述一遍项目,而要在项目经验中突出自己的贡献,比如添加了哪些功能,或者优化了哪些性能指数,最后的收益如何?其实很多面试者的一个通病就是项目经历写了一大堆,各种框架、数据库都写上了,却答不出自己项目中的难点。有的面试者可能心里会想:“自己的项目没有什么难点,遇到不会配置的、不会调节的,就在网上搜索一下。”其实大多数程序员做项目的时候都是这样的,为什么一样的项目经验,别人就可以在难点上说出一二三来呢?
这里还是有一些技巧的,首先是在做项目的时候要时刻保持对难点的敏感。很多时候我们费尽周折地解决了一个问题,如果不做记录,那么将很容易忘记。如果及时将自己的思考过程记录下来,那么这个思考过程就是面试中的重要素材,养成这样的习惯非常重要。很多面试者埋怨自己的项目没有难点,其实不然,找到项目中的一个点,深挖下去就会遇到难点,然后解决它,而这种经历就可以在面试中拿来说了。例如,使用Java完成的项目,深挖一下Java的内存管理,是不是可以减少一些虚拟机上内存的压力?
所以很多时候不是自己的项目没有难点,而是自己准备得不充分。不是每一个面试官都会主动问项目中有哪些亮点或者难点,这时就需要我们自己主动说出来。
这里讲一个面试中作为面试者如何变被动为主动的技巧。例如,自己的项目是一套分布式系统,我们在介绍项目的时候主动说:“项目中的难点就是解决多台服务器数据一致性的问题。”此时就应该知道面试官一定会问:“你是如何解决数据一致性问题的?”如果你对数据一致性协议的使用和原理足够了解,就可以和面试官侃侃而谈了,这样就相当于你把面试官引导到自己熟悉的领域,变被动为主动!
所以写简历的时候要突出自己技能的重点,这样相关问题相当于等着面试官来问,这也是面试时变被动为主动的关键。真正好的简历是当把自己的简历递给面试官的时候,知道面试官看着简历会问哪些问题,然后将面试官引导到自己最熟悉的领域,这样才会拥有主动权。
4.博客的重要性
在简历上可以写上自己的博客地址、GitHub地址甚至微博地址(如果发布了很多关于技术的内容),通过博客和GitHub,面试官可以快速判断面试者的技术水平、对技术的热情,以及对学习的态度。如果有很多高质量博客和GitHub项目,即使面试现场发挥得不好,面试官通过博客也会知道这位面试者的基础很扎实,只是发挥得不好而已。由此可以看出记录和总结的重要性。
任何人都可以通过博客记录自己的收获,每个知识点都可以写一篇技术博客,这方面要切忌懒惰!同时对GitHub不要畏惧,我们很容易找到一些小的项目来练手——可以访问笔者的GitHub,上面有一些简单的项目。
面试过程只有短短的30分钟或者一个小时,如何把自己掌握的技术更好地展现给面试官呢?博客、GitHub都是很好的选择,这些都是面试中的加分项。

企业技术面试的基本流程

比较大的企业一般通过几轮技术面试来考查面试者的各项能力,流程如下:
一面——机试面:一般考查选择题和编程题。
二面——基础算法面:考查基础算法与数据结构。
三面——综合技术面:考查编程语言、计算机基础知识 ,以及项目经历等。
四面——技术leader面:考查面试者解决问题和快速学习的能力。
五面——HR面:主要了解面试者与企业文化相不相符、面试者的职业发展、Offer的选择,以及介绍企业提供的薪资待遇,等等。
并不是说一定是这五轮面试,不同的公司情况都不一样,甚至同一家公司不同事业群的面试流程都是不一样的。这里尽量将面试的各个维度拆开,有利于读者充分了解技术面试的流程,以及需要做哪方面的准备。
接下来逐一分析在各个面试环节中,面试官是从哪些维度来考查的。

  1. 一面——机试面
    机试面通常考查选择题和编程题,还有一些公司的机试面只考查编程题。
    选择题:计算机基础知识涉及计算机网络、操作系统、数据库和编程语言等。
    编程题:一般是代码量比较大的题目,比如字符串、二叉树、图或者一些复杂模拟类的题目。
    在校招中,比较大的企业通常会提前发笔试题邀请电子邮件,邮件里规定了开始时间和结束时间。一定要慎重对待机试面,如果没有通过机试面,那么就没有后续的面试机会了。
    2.二面——基础算法面
    二面也会考查算法,但和机试面中对算法的考查的侧重点有所不同,机试面注重的是正确率,而二面中面试官更想了解面试者的思考过程。通常一面的题目是代码量比较大的题目,而二面是一些基础算法。面试官会让面试者在白纸上写代码或者给面试者一台计算机来写代码。
    一些面试官喜欢让面试者在白纸上写代码,所以简单代码一定要能手写出来,不要过于依赖IDE的自动补全。例如,实现一个反转二叉树的函数,很多面试者平时都是在OJ(Online Judge)上练习算法的,但是OJ上一般都把二叉树的结构定义好了,可以直接写函数的实现,而面试的时候要在白纸上写代码,一些面试者一下子不知道二叉树节点的定义应该如何写——不是结构体定义得不对,就是忘了如何写指针。
    3.三面——综合技术面
    综合技术面一般考查如下三个方面。
    (1)编程语言
    面试官会考查面试者编程语言的掌握程度,如果是C++,那么一般会问STL、继承、多态、虚函数和指针等方面的问题。
    (2)计算机基础知识
    考查面试者计算机方面的综合知识,不同岗位考查的侧重点不一样,如果是后台开发的岗位,那么操作系统、计算机网络、数据库的相关知识是一定要问的。
    (3)项目经验
    主要从以下三方面对面试者进行考查:技术原理、技术深度、应变能力。
    在技术原理方面,主要考查技术实现背后的原理,比如某个项目中接口调用的原理。
    在技术深度方面,如果是后台开发的岗位,则可以从系统的扩容、缓存和数据存储等多方面对面试者进行考查。
    在应变能力方面,如果面试官针对某个项目问面试者一个应用场景的问题,那么最忌讳回答:“我没考虑过这种情况。”这会让面试官对面试者的印象大打折扣。即使这个场景没考虑过,也要随机应变,思考出一个方案。然后与面试官讨论出一个可行的方案,这样会让面试官对面试者的好感倍增。
    4.四面——技术leader面
    技术leader面主要考查面试者的两个能力——解决问题的能力和快速学习的能力。
    (1)解决问题的能力
    面试官经常问的相关问题有:
    在项目中遇到的最大技术挑战是什么,是如何解决的?
    给出一个项目问题让面试者分析。
    如果是应届生,那么会问面试者在学习中遇到哪些挑战。面试官可能还会给出一个具体的项目场景,问面试者如何去解决。例如,如果是你来设计微信朋友圈的后台,那么应该怎么设计呢?遇到这种问题也不必惊慌,因为面试官也知道面试者没有设计过,所以大胆说出自己的设计方案就行,面试官会进一步指出你的方案可能哪里有问题,最终讨论出一个比较合理的结果。
    这里面试官主要针对项目问题考查面试者是如何思考、解决问题的。
    (2)快速学习的能力
    面试官经常问的相关问题有:
    如何快速学习一门新的技术或者语言?
    读研之后发现自己和本科毕业有什么差别?
    再具体一点,面试官会问:如果有一个项目这两天就要启动,而这个项目使用了你没有用过的语言或者技术,你将怎么完成这个项目?也就是如何快速学习一门新的编程语言或技术。所以平时要总结自己学习知识的技巧,面试官喜欢有自己一套学习方法论的面试者。
    如果面试者是研究生,面试官还喜欢问:读研之后发现自己和本科毕业有什么差别?这里要体现出自己思维方式和学习方法上的进步,而不是用了两三年的时间又多学了哪些技术。因为IT行业是不断变化的,面试官在意的是面试者思维方式的成长和进步。
    5.五面——HR面
    终于到了HR面了,是不是感觉万事大吉了呢?
    事实上这里万万不可大意,否则到手的Offer就“飞”了。HR是有选择权的,不一定要录用所有通过技术面试的面试者,而是要选择符合公司文化和价值观的面试者。
    这里列举一些关键问题。
    (1)为什么选择我们公司?
    这里一定要有所准备,不能被问到了之后一脸茫然,然后说就是想找个工作。最好从技术氛围、职业发展和公司潜力等方面来说明自己为什么选择这家公司。
    (2)有没有职业规划?
    如果是应届生,那么可能并没有明确的职业规划,但建议尽量给自己制订一个职业规划,至少当被HR问到的时候,不要哑口无言。对于社招的面试者,一般都应该有自己的明确规划,这里就不多说了。
    (3)坚持最久的一件事情是什么?
    一些面试者可能无法在印象里找到一件自己坚持很久的事情,也没有认真想过这个问题,被问到这个问题的时候表现得很茫然,憋了半天说出一个无关紧要的事情。这在HR眼里就是一个减分项了。
    (4)期望薪资XXX是否接受?
    如果面试者感觉自己表现得很好,给面试官留下了很好的印象,那么可以在这里争取Special Offer,也就是更高的薪酬。前提是对自己信心十足。
    (5)前一家公司给你的薪水是多少?
    这里切记不要虚报工资,因为入职前是要查工资流水的,这是比较严肃的问题。
    以上内容摘自《代码随想录:跟着Carl学算法》

读者评论

相关博文

  • 社区使用反馈专区

    陈晓猛 2016-10-04

    尊敬的博文视点用户您好: 欢迎您访问本站,您在本站点访问过程中遇到任何问题,均可以在本页留言,我们会根据您的意见和建议,对网站进行不断的优化和改进,给您带来更好的访问体验! 同时,您被采纳的意见和建议,管理员也会赠送您相应的积分...

    陈晓猛 2016-10-04
    5700 747 3 7
  • 迎战“双12”!《Unity3D实战核心技术详解》独家预售开启!

    陈晓猛 2016-12-05

    时隔一周,让大家时刻挂念的《Unity3D实战核心技术详解》终于开放预售啦! 这本书不仅满足了很多年轻人的学习欲望,并且与实际开发相结合,能够解决工作中真实遇到的问题。预售期间优惠多多,实在不容错过! Unity 3D实战核心技术详解 ...

    陈晓猛 2016-12-05
    3427 36 0 1
  • czk 2017-07-29
    6277 28 0 1