程序员如何准备简历以及面试的要求

广告位

程序员如何面试? 一,代码的完整性和鲁棒性 基本功能 边界值 无效的输入 时间效率 空间效率 二,事前准备 对…

程序员如何面试?

一,代码的完整性和鲁棒性

基本功能

边界值

无效的输入

时间效率

空间效率

二,事前准备

对公司近况,项目情况有所了解,同时还要准备好合适的问题问面试官

三,解题之前

不要过于紧张,不要急于写代码,应该先了解清楚所要解决的问题,这个时候最好先和面试官多做沟通,有疑惑的地方问清楚,以避免理解错题,然后开始做一些整体的设计和规划,即解题思路

如果是线上题目,写完之后,不要立即提交,自己检查并借助一些测试用例测试几遍代码

四,面试的三种形式

1.电话面试

有些面试官会打电话过来预约电话面试的时间,也有些面试官喜欢突然袭击,一个电话过来就开始面试。

自己在投完简历之后,需要注意下最近一段时间保持通信通畅。这一阶段大多是基础问题,做好准备即可,同时保证通话质量,听不清楚就尴尬了。

2.远程面试

远程面试即在线编程或者共享桌面。

在线编程,则考察基本功了,同时注意基本功能,边界值,无效输入,时间效率,空间效率。

共享桌面,则面试官可以实时观察到你的桌面。那么面试官重点关注的就是你的编程习惯以及调试能力

思考清楚再写代码

不要一开始就写代码,在没有形成清晰思路之前写的代码通常会漏洞百出,这个时候修改代码也会改的越来越乱,最终导致面试的结果不理想。

良好的代码命名以及缩进对齐习惯

单元测试 保证代码的完整性和鲁棒性

当遇到bug时候,能熟练的看日志,设置断点,单步跟踪,查看内存,分析调用栈等很快的发现问题的根源并解决

3.现场面试

规划好路线并估算出行时间,不要迟到。

衣着合适,同时注意看面试邀请函里的内容,比如面试地点,流程等。同时预先了解下公司,准备好要问面试官的问题。

五,现场面试的三个环节

1.行为面试环节

面试开始的5~10分钟是行为面试的时间,这个环节里,面试官会注意应聘者的性格特点,深入的了解简历中列举的项目经历。

一般开始会给一个自我介绍,用0.5到1分钟的时间介绍自己的主要学习、工作经历即可。如果面试官对某一段经历或者参与的某一个项目很感兴趣,那么他会有针对性的提几个问题详细了解

应聘者自我介绍之后,面试官接着会对照应聘者的简历去详细了解他感兴趣的项目。

重中之重:如何准备简历

使用STAR模型描述自己经历的每一个项目

situation: 简短的项目背景

比如项目的规模,开发的软件功能,目标用户等

Task: 自己完成的任务

这个要写详细,要让面试官对自己的工作一目了然。用词上要注意区分**“参与”和“负责”**,如果只是加入某个团队,写了几行代码就用“负责”很危险,面试官可能会问项目的总体框架设计,核心算法,团队合作等问题,这些对于只是简单参与的人来说,是很难回答的。会让面试官觉得你不诚实。

Action:为完成任务自己做了哪些工作,是怎么做的。这样可以详细介绍,做系统设计的,可以介绍系统架构的特点,做软件开发的,可以写基于什么工具在哪个平台下应用了哪些技术等等。

Result:自己的贡献。这方面的信息可以写的具体些,最好能用数字加以说明,如果是参与功能开发,则可以说按时完成了多少功能,如果做优化,则可以说性能提高的百分比是多少。

如果项目中上诉四类信息不够清晰,面试官很可能会追问相关问题。

除此之外,面试官针对项目经验最常问的问题包括如下几个:

你在该项目中碰到的最大问题是什么,你是怎么解决的?

从这个项目你学到了什么?

什么时候会和其他团队成员有什么样的冲突,你们是怎么解决冲突的。

因此,在准备简历的时候,针对每一个项目经历都提前做好相应的准备!!

简历上的技能

要注意区分:了解,熟悉,精通

了解:指某项技术只是在上过课或者看过书,但是没有做过实际的项目。通常不建议在简历上列出只是肤浅的了解一点的技能,除非应聘的岗位确实需要。

熟悉:简历中我们描述技能的掌握程度大部分应该是“熟悉”。如果我们在实际项目中使用某项技术已经有较长时间,通过查阅相关的文档可以独立解决大部分问题。

精通:如果我们对一项技术使用得得心应手,当别人向我们请求这个领域的问题时候,我们都有能力去解决,这个时候我们就可以说精通了这项技术。不要轻易用精通这个词,除非自己能有把握轻松回答这个领域里的绝大多数问题,否则会适得其反。

2.技术面试环节

面试官通过简历以及行为面试大致了解面试者的背景之后,接下来就是技术面试了。一轮一小时的面试,通常技术面会占据40~50分钟,这是面试的重头戏,对面试的结果起决定性的作用。

面试官会关注的面试者的5种素质:

1.扎实的基础知识

包括编程语言、数据结构、算法等

2.能写高质量的代码

能写出正确的 完整的 鲁棒的高质量代码

3.分析问题时思路清晰

能思路清晰的分析,解决复杂问题

4.能优化时间效率和空间效率

能从时间,空间复杂度两方面优化算法效率

5.学习沟通能力

具备优秀的沟通能力,学习能力,发散思维能力等

因此,面试者应当做足准备,对编程语言,数据结构和算法等基础知识有全面的了解。面试的时候如果遇到简单的问题,则应聘者一定要注重细节,写出完整,鲁棒的代码,如果遇到复杂的问题,则应聘者可以通过画图,举例子分析和分解复杂问题等方法先理清思路再动手编程。除此之外,还应该不断优化时间效率和空间效率,力求找到最优的解法。在面试的过程中,应聘者还应该主动提问,以弄清楚题目的要求,表现自己的沟通的能力。

扎实的基础知识

基本功在编程环节体现在三个方面:

编程语言,数据结构和算法

需要对编程语言很熟练,常用的概念,工具包,特性等等。比如java的面向对象,集合类,多线程,jvm等等。

数据结构,需要熟练掌握链表,树,栈,队列和哈希表等数据结构。如果我们留意各大公司的面试题,就会发现与链表和二叉树相关的问题是很多面试官喜欢问的问题。这方面的问题看着简单,但是真正掌握也不容易,特别适合在面试时间内检验面试者的基本功。如果面试者对链表的插入和删除节点了如指掌,对二叉树各种遍历循环和递归写法烂熟于胸,那就游刃有余了。

最后,大部分公司都会注重考察查找,排序等算法。需要重点掌握二分查找,归并排序和快速排序,因为很多面试题都只是这项算法的变体而已。

其次,大厂对算法要更高,面试者需要熟练掌握动态规划和贪婪算法等。

高质量的代码

只有注重质量的程序员,才能写出稳定,鲁棒的大型软件。面试官会格外关注边界条件,特殊输入等看似细枝末节但是至关重要的点。

需要考虑边界条件,特殊输入比如null,空字符串等以及错误处理

作者:程序员小伙伴
链接:https://www.jianshu.com/p/613bfc7caab6
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

程序员吐槽大会

关于作者: 程序员吐槽大会

为您推荐