前言
技术面试是每个程序员都需要去经历的事情,随着行业的发展,新技术的不断迭代,技术面试的难度也越来越高,但是对于大多数程序员来说,工作的主要内容只是去实现各种业务逻辑,涉及的技术难度并不高,往往就是简单的CRUD,这就造成平常的技术积累比较少,在准备面试时往往需要背大量的基础知识。
关于面试的一点小建议
之前的工作经历总共也面试过上百人,真正能把一场面试面好的人真的非常少,经历一场让双方都感觉愉悦的面试无疑是一件美好的事情,但这对应聘者和面试官的要求都比较高。虽然都说面试是双向选择,但是实际情况往往还是面试官占主导地位,因为你选择来面试说明你已经完成了对公司的选择,作为应聘者认真去准备一场面试,并在面试中完美的发挥出来,拿到offer的概率会大很多。
1、关于简历
简历是面试官对你的第一印象,拿到一份好的简历面试官的兴致也会高很多,毕竟很多时候面试对面试官来说是一种负担。写简历的时候一定要站在面试官的角度思考,你的简历可以给面试官展示哪些信息,这些信息是否是面试官关注的。简历尽量做到言简意赅,一些无效的信息就不要写上去了,毕竟版面有限,写太多别人也不愿意看,或者看半天发现不了重点和亮点。下面是几个具体的小建议:
关于内容: 首先要给自己一个清晰的定位,基于自己的定位去思考应该具备哪些能力,所有的内容都围绕这些能力来展开;比如应届生应该突出自己的学习能力,公司更关注的是你的可培养性;刚工作不久的同学应该突出自己的基础扎实,这时候公司希望你能快速上手工作;对于相对资深的同学来说应该突出自己的架构能力以及团队管理能力,这时候公司希望你能解决一些复杂问题,或者是带着团队一起解决复杂问题;再往上要求就更高了,暂时我还达不到就不多说,如果有大佬欢迎分享;
关于排版: 一般控制在两页比较好,既能把问题说清楚,也不至于太冗长,在写自己的项目经历时没必要把自己做过的所有项目都列出来,挑2-3个你觉得最重要的项目即可,把难点和技术方案写清楚,不要写一堆项目,但是每个都是一两句话带过,这样其实没太多意义,面试的时候也不可能所有项目都问一遍,毕竟时间有限,能把一两个项目聊透就很好了;
简历可以按照这个框架来写,也可以根据自己的实际情况调整:
基础信息: 出生年月、邮箱、手机号、籍贯、民族、学历、求职意向、工作经验;
工作经历: 时间、公司名称(最好写品牌名,辨识度会高一些,写合同上的名称很多都看不出是什么公司)、职位、工作内容(这个可以写的详细点,一些重点的项目和有亮点的工作都可以写出来);
职业技能: 根据自己当前的定位来写,如果你已经工作好几年了,一些太基础的就不要写了,比如xxx开发工具的使用,这里的职业技能一定要跟你的职业定位相匹配;
教育背景: 学校、学历、专业、时间,有亮点事件可以写,如果没有保持简单即可;
项目经历: 项目名称、角色、时间、项目背景、项目难点、技术方案、项目成果、工作职责等,可以根据自己项目的实际情况来调整;
2、关于面试复习
面试前进行复习是必不可少的,一般会包含这几方面的内容:项目整理、语言的基础知识、框架、中间件、源码、架构知识、计算机基础(网络、操作系统等)、算法(刷题)等;要完整的复习一遍一般周期在3-6个月之间,所以想要跳槽了一定要提前进行准备。
3、关于面试
面试一般会包括几个环节:
自我介绍: 自我介绍其实是一个非常重要的环节,但是最容易被忽视,自我介绍首先可以起到暖场的作用,对于面试者来说也是一个可以主动引导面试官的环节,这个环节把握好了可以让面试官跟着你的思路走,这样就不至于太被动;
项目介绍: 项目介绍是整个面试最关键的环节,这个在面试前一定要认真去准备,多模拟几遍怎么去介绍自己的项目,讲出项目的难点,以及其中一些技术点,你在其中发挥的作用,以及你的思考,之前在面试中真正能把项目讲好的人非常少,很多都只是泛泛而谈,这样没法通过项目来判断你的能力。在准备项目内容的时候还要想一下面试官听完你的介绍后可能会问你什么问题,提前做好应对;
技术问题: 这个就是俗称的八股文环节,如果你项目讲的很好,这个环节会弱化很多,如果从项目上面试官找不到亮点那就只能通过技术问题来面试你了,这个环节对于应聘者来说就被动很多了,虽然大的方向会基于你的职业技能来问,但是面试官可发挥的空间很大,不太好把握会被问到什么,这也是面试最容易被挂的地方,应对的方法只能是前期做好充分的准备,以及讲项目的时候能吸引住面试官。对于一些大厂还会需要写算法题,这个需要多刷题(leetcode基本都知道吧),除非你天赋异禀,不然让你临时想还是比较难的;
收尾环节: 这个环节相对来说没那么重要,只要不表现的很奇葩一般问题不大,如果前面的面试面的还可以,这个环节就正常点就行,如果前面问题回答的不太好可以在这里挽救一下,但是一般效果不大,到这个环节面试官基本对你有结论了;
趁最近有一些闲暇时间,特地将自己之前整理的笔记共享出来,方便大家进行面试复习。 内容覆盖了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构、Hadoop、Spark、机器学习等大量知识点。**
我随后截了几张图,大家可以仔细查看左边的菜单栏,覆盖的知识面很广,质量都非常nice。