“35岁有能力的人,应该都是靠猎头或者熟人来找工作,而不是面试”,这应该是今年我看到打击较大的一句话。环顾下自己的人脉和能力,找下一份工作好像还是要面试,一是自己没有大厂的荣耀傍身,二是身边也没有当老板的朋友,即使有也只是多了一个面试的机会。
面试前的准备
应聘都是需要准备的,即使你平时工作很出色,当你离职找工作时,依然需要你去归纳和总结,并不断的练习和改进,才会找到适合自己面试的节奏。
写好自己的简历
- 自我简介。用最简单的化来说明自己的情况,不超过200字。比如:10+年软件开发经验,4+年团队的leader经验,等
- 个人信息:基本信息,个人网站,网站内容,作品展示。
- 个人技能:技术栈,技术领域,业务领域,经验和软件能。
- 工作经历和教育经历:每份工作完成的主要项目,个人技能印证。
技术知识准备
- Java: 基本语法,并发编程,NIO,JVM,Spring, Netty等
- Go: Effective Go
- Redis: Redis数据结构,性能优化,高可用配置,分布式锁等
- 面向对象:23中设计模式有所了解
- 分布式架构:CAP理论,微服务架构,弹力设计,Spring Cloud, Cloud Native等
- 网络编程:TCP/IP三次握手,四次挥手,两端状态变化,Socket编程,select, pool, epoll这些异步IO多路复用
算法题准备
- 数据排序:二分查找相关
- 无需数组上的搜索或者统计,动用O(1)时间复杂度
- 一堆无序的数据中找top n的算法,使用最大堆或是最小堆数据结构
- 穷举答案相关的题:深度优先搜索和广度优先搜索,或是回溯递归的思路
- 动态规划需要重点准备一下,这样的题很多,最大和子数组,背包问题,爬楼梯,改字符等
工作项目准备
- 说一个你做过最自豪的项目,或是最近的一个项目
- 你解决过的最难的技术问题,或是最有技术含量的问题
- 说一个你最痛苦的项目,或最艰难的项目
- 说一个犯过的最大技术错误,或引发的技术故障 如何解答:
- 要有框架。学会使用STAR,背景,做什么事情,如何做的,最终效果
- 要有细节。要有一些技术细节
- 要有感情。让面试官感受到你的热情,骄傲和顽强
- 要有思考。自己有总结和反思
面试中的技巧
形象和谈吐
面试过程很短,对一个人的认识和了解也是有限的。如果技能一般的话,那么就需要加强你的形象和谈吐了。
- 形象方面:最好装工作便装,休闲的也没事,但是要让人感到干净,整洁。
- 谈吐:保持微笑,表现得热情,开朗和幽默是非常重要的。说话的时候,要看着对方,一方面这是对对方的尊重和礼貌,另一方面,这也是一种自信。就算没有面好,也不要低着头。
- 表达和谈吐最好的训练就是写作,你写得多了,就能把复杂的问题描述清楚了,自然也会体现在语言组织能力上。
尖锐的问题
- 你为什么要离开现在的公司?最标准的外交词令是:我离开现有公司只是因为我太喜欢你们公司了。
- 说一下你的缺点?只要你认识到任何性格的人都有问题,那么这个问题就好回答了。最后还要补充一句,我知道我的缺点,我也在努力改正,或者正在通过什么样的方式改正。
- 你工作为什么换得如此勤?要么是公司有变化,要么就是自己没有选好。一方面表达自己也厌倦频繁换工作,另一方面把话题引入另外一个方向,什么工作你可以干很久。
结尾问题
一般面试结束的时候,都会问你有什么问题,不要放弃这个机会。
- 如果你面得比较好,可以问几个尖锐的问题。比如你们公司有多少一线开发经理还在写代码?你能不能分享一下你最喜欢这个公司的地方和最不喜欢的地方?
- 如果你面得一般,可以问一下加分项的问题。目前贵公司或是团队最需要解决什么样的问题?我能帮贵公司做些什么?
- 如果你面得很不行,基本挂掉了。这个时候,要问下面试官对你的评价,并且让他指出你的不足和需要改进的地方。
长远规划
程序员面试,最重要的还是自己的技术方面的能力,会注重你的项目经验,基础知识,解题思路,以及软件设计能力。要应付并通过面试并不难,但是,你千万不要应付你的人生,你学技术不是用来面试的,它至少来说是你谋生的技能,要尊重自己的谋生技能,说不定,哪天你还要用这些技能造福社会,改变世界的。