周日就要面试了,才突然发现没有正式地学习过面试本身,补一下课
面试的三种形式
电话面试
- 电话充好电
 - 不要太嘈杂
 - 要尽可能地多问问题的细节
 - 尽可能地用形象的语言将细节说清楚
 - 听不懂/不理解的话要多问
 - 用自己的理解复述一遍问题
 
共享桌面
思考清楚再开始写代码
- 明确解题思路
 - 估计时空复杂度
 - 边界条件
 - 写
 
良好的函数命名和缩进对齐
单元测试
- 先给出测试样例
 - 再开始写代码
 - 非常有用
 - 代码出错,也不要着急,耐心调试
 
现场面试
- 规划路线,估算时间
 - 准备得体的衣服
 - 注意邀请函内的面试流程
 - 注意提前想好几个问题
 
面试的三个环节
行为面试
开始:一个简短的自我介绍(主要的学习,工作经历,30s-1min)
- 用于调整自己的状态
 - 更多只是一个暖场
 
问题:项目经历
使用STAR模型描述项目
- Situation:项目背景
 - Task:完成的任务,注意参与与负责的区别,一旦说了负责,就会被问到架构设计,核心算法以及团队合作
 - Action:怎么做的,设计/开放/测试
 - Result:贡献,性能优化/维护/测试最好带上数字;功能的话则说具体的功能内容
 
其他问题
- 最大的问题,如何解决
 - 学到了什么
 - 和其他成员有没有冲突,如何解决冲突
 
提示
- 背景可以简化一些
 - 工作和成绩才是重头
 
技能:用词
- 参与/负责:做了一些工作/对整个项目了如指掌
 - 了解/熟悉/精通:上过课,看过书,没有做过项目/使用某项技术较长时间,具有相关文档可以解决一些问题/得心应手,能够解决同事的问题,不能随便写
 - 应聘原因:前一项工作得不到发展/刚到厌倦
 
技术面
- 基础知识:语言,数据结构,算法
 - 代码质量:边界条件,特殊输入,先加限制,再逐渐扩充,鲁棒性,尤其是空指针和错误处理,先写测试样例非常重要
 - 分析思路:举例将其具体化,用画图表示数据结构,尝试分解问题
 - 优化效率:
 - 综合能力:沟通,理解,学习能力,抽象能力等
 
提问环境
最好提前准备二到三个问题,以备不时之需。
不要问的问题
- 和自己的职位没有关系的问题
 - 不要问薪水
 - 不要问面试结果
 
推荐问题:职位或项目相关的问题
- 做好功课,了解时间,业务和职位要求
 - 留心面试官说过的话