面试的流程
- 能写单元测试,加分
- 答非所问,不懂装懂,大忌
- 准备几个问题
面试的三个环节
行为面试 5-10分钟
- 性格特点
- 深入了解项目经历
- 项目介绍方法
- 简短的项目背景
- 自己完成的任务(参与 != 负责)
- 为了完成任务自己是怎么做的
- 自己的贡献,最好能用数字加以说明
- 追问问题:
- 遇到最大的问题是什么,怎么解决
- 学到了什么
- 和其他团队成员有什么冲突,怎么解决的
- 项目介绍方法
- 简短的介绍
- 对技能的分级
- 了解:只是学过,但是没有做过实际的项目
- 熟悉:
- 大部分的技能
- 精通
- 不要随便用
- 如果有人请教这个方面的问题有信心解决,才能用精通
- 为什么跳槽
- NG答案
- 老板刻薄
- 同事难相处
- 加班频繁
- 工资太低
- 可以尝试的
- 对现在的工作失去了激情,需要寻找一份有挑战
- NG答案
技术面试 40-50分钟
- 基础知识
- 数据结构,算法,编程语言等
- 能写出清晰,完整的代码
- 能思路清晰的解决问题
- 简单问题-> 清晰代码
- 复杂问题-> 画图,举例等分析
- 能从时间空间方面优化代码
- 主动提问,弄清要求
- 沟通能力,学习能力,发散思维能力
基础
- 对一门编程语言的掌握
- 数据结构
- 链表,树,栈,队列,哈希表
- 尤其是链表和二叉树
- 查找,排序算法等
高质量代码
- 边界条件,特殊输入
- 简单的问题需要完整的考虑问题,考虑特殊条件
- 代码是不是够鲁棒
清晰的思路
- 举几个简单的例子让自己理解问题
- 图形抽象数据结构
- 把复杂的问题分成简单的子问题
优化效率的能力
- 不能放弃思考
- 需要知道怎么计算效率
- 比如斐波那契数列,用top-down就比bottom-up的重复计算多出很多
- 知道各种数据结构的优缺点
学习能力
- 最近在看什么书,学习到了什么新技术
- 抛出一个新概念,理解并解决相关的问题
提问环节 5-10分钟
- 不要问和自己职位没关系的问题
- 不要问薪水(指技术面试)
- 不要立即打听面试的结果
- 与应聘的职位和项目相关的问题
- 提前了解公司信息
- 注意面试时对方介绍的内容
第二章 面试的基础知识
编程语言
驱动C,linuxCpp,windowsC#,跨平台Java,苹果O-C,小型应用Perl,Python
C++
- sizeof(也就是拿着准备好的概念题)
- 空类型的sizeof,instance需要占据一定空间,占用多少编译器决定
- 给一段代码,看是否能够运行等
- 定义一个类型或实现类型中的成员函数
相关书籍
- Effective C++(面试之前突击)
- C++ Primer(语法的全面了解)
- 深度搜索C++对象模型(了解对象内部)
- The C++ Programming Language(深入了解)
C\
- 主要会问C++和C#的区别
相关书籍
- Professional C#(写给已经有其他经验的程序员)
- CLR Via C#