通常,面试是从电话面试开始的。接下来可能有一两轮共享桌面远程面试,面试官通过桌面共享软件远程考查应聘者的编程和调试能力。如果应聘者的表现足够优秀,那么公司将邀请他到公司去接收现场面试。

通常,面试官会认可应聘者的几种编程习惯

  • 思考清楚再开始编码。应聘者应先想清楚解决问题的思路,如算法的时间、空间复杂度各是什么,有哪些特殊情况需要处理等,然后动手编写代码。
  • 良好的代码命名和缩进对齐习惯。良好的代码命名和缩进对齐的习惯会让面试官觉得应聘者有参与大型项目的开发经验。
  • 能够进行单元测试。如果应聘者先写单元测试用例,再写解决问题的函数,那么我相信面试官定会对你刮目相看,因为能做到测试在前、开发在后的程序员实在太稀缺了,他会毫不犹豫地抛出橄榄枝的。

当我们在写代码的时候遇到问题的表现

当应聘者运行代码发现结果不对之后的表现,也是面试官关注的重点,因为应聘者此时的反应、采取的措施都能体现出他的调试功底。如果应聘者能够熟练地设置断点、单步跟踪、查看内存、分析调用栈,就能很快发现问题的根源并最终解决问题,那么面试官将会觉得他的开发经验很丰富。

在共享桌面远程面试过程中,面试官最关心的是应聘者的编程习惯和调试能力。

现场面试需要注意:

在去公司参加现场面试之前,应聘者应做好以下几点准备:

  • 规划好路线并估算出行时间。如果面试迟到,那至少印象分会大打折扣。
  • 准备好得体的衣服。IT公司通常衣着比较随意,应聘者通常没有必要穿着正装,一般舒适干净的衣服都可以。
  • 注意面试邀请函里的面试流程。
  • 准备几个问题。每一轮面试的最后,面试官都会让应聘者问几个问题,应聘者可以提前准备好问题。

面试3环节

面试的3个环节:行为面试、技术面试、应聘者提问

一、行为面试

面试开始的5~10分钟是行为面试时间,面试官会注意应聘者的性格特点,深入地了解简历中列举的项目经历。这一环节一般不会问技术难题,因此也是一个暖场的过程。
不少面试官会让应聘者做一个简短的自我介绍,由于面试官手中拿着应聘者的简历,而那里有应聘者的详细信息,因此此时的自我介绍不用花很多时间,用30秒到1分钟介绍自己的主要学习、工作经历即可。如果面试官对你的某一段经历或者某一个项目有兴趣,那么他会有针对性地提几个问题详细了解。

应聘者的项目经验

应聘者自我介绍之后,面试官接着会对照应聘者的简历去详细了解感兴趣的项目。应聘者在准备简历时,建议按照如下的STAR模型描述自己经历过的每一个项目。

  • Situation:简短的项目背景,比如项目的功能,开发的软件的功能、目标用户等。
  • Task:自己完成的任务。在用词上区分“参与”和“负责”。如果应聘者“负责”了某个项目,那么面试官可能会问项目的总体框架设计、核心算法、团队合作等问题。
  • Action:为完成任务自己做了哪些工作,是怎么做的。这里可以详细介绍,做软件开发的,可以写基于什么工具在哪个平台下应用了哪些技术。
  • Result:自己的贡献。这方面的信息可以写得详细些,最好能用数字加以说明。如果是参与功能开发,则可以说按时完成了多少功能。

在介绍项目经验时,一拧着不必详述项目的背景,而要突出介绍自己完成的工作及取得的成绩。

面试官针对项目经验最常问的问题包括如下几个类型

  • 你在项目中碰到的最大问题是什么,你是怎么解决的?
  • 从这个项目中,你学到了什么?
  • 什么时候会和其他团队成员(包括开发人员、测试人员、设计人员)有什么样的冲突,你们是怎么解决冲突的?(与前端合作,共同探讨,相互理解)

应聘者掌握的技能

描述技能掌握程度时注意“了解”、“熟悉”和“精通”的区别。

  • “了解”指对某项技术只是上过课或者看过书,但没有做过实际的项目。通常不建议在简历中列出只是肤浅地了解一点的技能。简历中我们描述技能的掌握程度大部分应该是“熟悉”。

二、技术面试

一轮1小时的面试,通常技术面试会占据40~50分钟,这是面试的重头戏,对面试的结果起决定性作用。

技术面试需要具备的5种素质

  • 基础知识扎实全面,包括编程语言、数据结构、算法等
  • 能写出正确的、完整的、鲁棒的高质量代码
  • 能思路清晰地分析、解决复杂问题
  • 能从时间、空间复杂度两方面优化算法效率
  • 具备优秀的沟通能力、学习能力、发散思维能力等

面试时如果遇到简单的问题,则应聘者一定要注重细节,写出完整,鲁棒的代码。如果遇到复杂的问题,则可以通过画图、举具体例子分析和分解复杂问题等方法先理清思路再动手编程。

1、扎实的基础知识

通常基本功在编程面试环节体现在3个方面:编程语言、数据结构和算法。编程语言的关键字特性等。
数据结构通常是编程面试过程中考察的重点。在参加面试之前,有需要熟练掌握链表、树、栈、队列和哈希表等数据结构,以及他们的操作。留意各大公司的面试题,会发现与链表和二叉树相关的问题是很多面试官喜欢问的问题。
要做到事先对链表的插入和删除节点了如指掌,对二叉树的各种遍历方法的循环和递归写法都烂熟于心,这样到真正面试的时候也就游刃有余了。
最后,各大公司都会注重考查查找、排序等算法。应聘者在了解各种查找和排序算法的基础上,重点掌握二分查找、归并排序和快速排序。

2、高质量的代码

在面试过程中,面试官总会格外关注边界条件、特殊输入、错误处理等看似细枝末节但实则至关重要的地方,以考查应聘者是否注重代码质量。

通常越是简单的问题,面试官的期望值就会越高。如果题目很简单,面试官就会期待应聘者能够很完整地解决问题,除完成基本功能之外,还要考虑到边界条件、错误处理等各个方面。
除问题考虑不全之外,还有一个面试官不能容忍的错误就是程序不够鲁棒。如输入一个null会直接导致程序崩溃等问题。这样的代码如果加入到软件当中,那么将是灾难。因此,当面试官看到代码没有对null值进行判断并特殊处理的时候,通常他连往下看的兴趣都没有。
有的程序是否有鲁棒性并不是那么明显,举例如下:

求链表中的倒数第k个节点

方法是使用两个指针,第一个指针先走k-1步,然后两个指针一起走,当第一个指针走到尾节点的时候,第二个指针所在位置就是倒数第k个节点。
该题中需要特别注意的问题是:当链表中的节点总数小于k,或者当输入的k是0时,会引起程序的崩溃。这点小细节将很可能会决定面试的成败。
要想很好地解决这样的问题,最好的办法是在动手写代码之前想好测试用例。只有把各种可能的输入实现都想好了,才能在写代码的时候把各种情况都进行相应的处理。写完代码之后,也不要立刻给面试官检查,而是先在心里默默地运行。当输入之前想好的所有测试用例都能得到合理的输出时,再把代码交给面试官。做到了这一步,通过面试拿到offer就是顺理成章的事情了。

3、清晰的思路

在面试时,有时面试官会有意出一些复杂的问题,以考查应聘者能否在短时间内形成清晰的思路并解决问题。对于确实很复杂的问题,面试官甚至不期待应聘者能在面试不到一小时的时间里给出完整的答案,他更看重的可能还是应聘者是否有清晰的思路。面试官通常不喜欢应聘者在没有形成清晰思路之前就草率地开始写代码,这样写出来的代码容易逻辑混乱,错误百出。
应聘者可以用几个简单的方法帮助自己形成清晰的思路:

  • 首先,举几个简单的例子让自己理解问题。
  • 其次,可以试着用图形表示抽象的数据结构。
  • 最后,可以试着把复杂的问题分解成若干简单的子问题,再一一解决。

如果在面试的时候遇到难题,我们有3种办法分析、解决复杂问题:画图能使抽象问题形象化,举例能使抽象问题具体化,分解使复杂问题简单化。

4、优化效率的能力

当面试官出的题目有多种解法时,通常他会期待应聘者能够找到最优解

当面试官提示还有更好的解法的时候,应聘者不能放弃思考,而应该努力寻找在时间或者空间消耗上可以优化的地方。

如何优化时间或者空间效率?

  • 首先要知道如何分析效率。如求斐波拉契数列,如果使用递归,分析它的递归调用树,会发现它有大量的重复计算,时间复杂度以n的指数增加。而如果使用循环求解,那么时间效率就只有O(n)。
  • 其次还要数值各种数据结构的优缺点,并能选择合适的数据结构解决问题。
  • 要想优化代码效率,我们也要熟练掌握常用的算法。
5、优秀的综合能力

在面试过程中,应聘者的软技能,如沟通能力和学习能力也相当重要。
在面试过程中,面试官会观察应聘者在介绍项目经验或者算法思路时是否观点明确、逻辑清晰,并以此判断其沟通能力的强弱。
通常面试官有两种办法考查应聘者的学习能力。

  • 第一种是询问应聘者最近在看什么书、从中学到了那些新技术。面试官可以用这个问题了解应聘者的学习愿望和学习能力。
  • 第二种方法是抛出一个新概念,接下来他会观察应聘者能不能在较短的时间内理解这个新概念并解决相关问题。

只是迁移能力是一种特殊的学习能力。面试官经常会先问一个简单的问题,再问一个复杂但和前面的简单问题相关的问题。这时候面试官期待应聘者能够从简单问题中得到启示,从而找到解决复杂问题的窍门。

三、应聘者提问环节

在结束面试前的5到10分钟,面试官会给应聘者机会问几个问题,应聘者的问题的质量对面试的结果也有一定的影响。应聘者可以在每一轮面试前准备2~3个问题,这样到提问环节就可以游刃有余了。
面试官让应聘者问几个问题,主要是想了解他最关心的问题有哪些,因此应聘者至少要问一两个问题。
有些问题是不适合在技术面试这个环节问的。

  • 首先,不要问和自己职位不相关的问题,如“公司未来五年的发展战略是什么”
  • 其次,不要问薪水。技术面试不是谈薪水的时候,要谈工资要等通过面试之后和HR谈。
  • 再次,不要立即打听面试的结果。现在大部分公司的面试都有好几轮,最终决定的是几轮面试的综合评价。
  • 最后,推荐问的问题是与应聘的职位或者项目相关的问题。如果这种类型的问题问得很到位,那么面试官会觉得你对应聘的职位或者项目的背景有一定了解。

我们可以通过两方面去了解相关的信息:一是面试前做足功课,到网上去搜集一些相关信息,做到对公司成立时间、主要业务、职位要求等都了然于胸;二是面试过程中留心面试官说过的话。有不少面试官在面试之前会简单介绍与招聘职位相关的项目,其中会包含从其他渠道无法得知的消息,比如项目进展情况等。应聘者可以从中找出一两个点,然后向面试官提问。

《剑指offer》序——面试流程及面试须知相关推荐

  1. 《剑指offer》第二章——关于面试官王海波的思考

    一.C++基础知识 1.面向对象的特性:封装.继承和多态. 所谓封装,就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏.简单的说,一个类就是一 ...

  2. 剑指offer读书笔记

    剑指offer读书笔记 一.面试的流程 1.浅谈面试的重点 2.面试的形式 3.面试的环节 二.面试的基础知识 1.基础知识 2.数据结构 3.算法和数据操作 三.高质量代码 1.代码的规范性 2.代 ...

  3. 剑指Offer(1)——第一章面试的流程

    目录 前言 正文 一.经验 二. 常见题目 1. 把一个字符串转换成整数 2. 求链表中的倒数第n个节点 三.测试相关内容 1. 白盒测试 2. 黑盒测试 3. 自动化测试 参考 前言 剑指Offer ...

  4. 【强烈推荐】《剑指Offer:名企面试官精讲典型编程题》一书中IT名企经典面试题

    各位程序猿: <剑指Offer> 一书源自该书作者何海涛坚持更新与编写的博客( http://zhedahht.blog.163.com/ ),该博客收集整理了大量如微软.Google等知 ...

  5. 剑指Offer名企面试官精讲典型编程题pdf

    下载地址:网盘下载 <剑指Offer:名企面试官精讲典型编程题(第2版)>剖析了80个典型的编程面试题,系统整理基础知识.代码质量.解题思路.优化效率和综合能力这5个面试要点.<剑指 ...

  6. 何海涛——《剑指Offer:名企面试官精讲典型编程题》一书中IT名企经典面试题

    <剑指Offer> 一书源自该书作者何海涛坚持更新与编写的博客( http://zhedahht.blog.163.com/ ),该博客收集整理了大量如微软.Google等知名IT企业的经 ...

  7. 面试经典算法题集锦——《剑指 offer》小结

    本文转载自: http://www.cnblogs.com/fanling999/p/7810558.html 作者:fanling999 转载请注明该声明. 从今年 3 月份开始准备找实习,到现在校 ...

  8. 剑指offer有用python版的吗_Python算法面试通关,剑指offer就靠它了

    原标题:Python算法面试通关,剑指offer就靠它了 北上广容不下肉身, 三四线放不下灵魂, 程序员里没有穷人, 有一种土豪叫算法工程师. 算法,晦涩难懂,却又是IT领域最受重视的素养之一可以说, ...

  9. 剑指offer 面试32题

    面试32题: 题目:从上到下打印二叉树 题:不分行从上到下打印二叉树 解题代码: # -*- coding:utf-8 -*- # class TreeNode: # def __init__(sel ...

  10. 剑指Offer——你真的看懂无领导小组面试了吗?

    原文地址为: 剑指Offer--你真的看懂无领导小组面试了吗? 剑指Offer--你真的看懂无领导小组面试了吗? 什么是无领导小组面试?   "无领导小组讨论"一般会将一定数量的被 ...

最新文章

  1. 60+应用,哪款是你最爱?
  2. FluxSink实例及解析
  3. Copy ArrayList的四种方式
  4. margin赋值为负值的几种效果(负值像素,负值百分数)
  5. 深度学习最常用的10个激活函数!
  6. Bootstrap table分页问题汇总
  7. Python 添加类型标注 | 散发着自由松散气息的代码
  8. 对于开发 0 bug 代码的思考——Design by Contract 契约设计
  9. 创建数据库中,常用的MySQL命令(含解析与全部代码)
  10. Profinet协议生成GSD文件教程
  11. 如何用python快速的搭建一个websocket服务器?
  12. 3.究竟什么是“财富自由”?
  13. cd linux 镜像,解开 CDLinux 的iso映像文件
  14. php学籍信息管理系统心得_php学籍管理系统,源码免费分享
  15. Win10中允许UWP应用走代理的操作方法
  16. Java教程-Java 程序员们值得一看的好书推荐
  17. 楚留香获取服务器信息卡主,楚留香手游沧海主线任务bug原因及解决方法一览
  18. oracle 分区表 变大,Oracle11G新特性:分区表分区默认segment大小64k变为8M
  19. php下雨效果源码,ps下雨效果制作步骤
  20. 如何给PPT加上页码?

热门文章

  1. 【数据库原理】Transact-SQL
  2. 银行数字化转型导师坚鹏:基于招商银行案例研究的银行APP运营
  3. Qt学习之界面UI编程应用
  4. 仿京东商城商品分类搜索功能
  5. Java— AWT 绘图(一)
  6. 粉丝看了教程成功发文章了,恭喜一下,并说下近期计划
  7. [Rust笔记]`Deref coercion`(自动解引用类型转换)精制总结
  8. 高盐废水处理工艺——料液精制与除杂
  9. java jzip_JAVA UI 实现ZIP的压缩与解压缩
  10. 深度学习细颗粒图像分析综述