1. 行为面试环节
项目经验是重中之重,简历撰写参考STAR模型:即Situation(简短的项目背景),Task(完成的任务),Action(为完成任务做了哪些工作,怎么做的),Result(自己的贡献)。
准确描述对技能的定位:了解,熟悉,精通。
.回答为什么跳槽。一定要往积极方面去回答,如个人技术瓶颈,想寻找一份更有挑战的工作。
2. 技术面试环节
基础知识扎实全面,包括编程语言,数据结构,算法等等;
能写出正确的,完整的,鲁棒的高质量代码;
能思路清晰地分析,解决复杂问题;
能从时间,空间复杂度两个方面优化算法效率;
具备优秀的沟通能力,学习能力,发散思维能力等
扎实的基础知识:编程语言,数据结构和算法。链表,树,栈,队列和哈希表等。
1. 大公司倾向于链表和二叉树相关的问题:链表的插入和删除;二叉树的各种遍历方法的循环和递归
2. 大部分公司都会考察查找,
3. bat等高科技公司比较注重动态规划和贪婪算法
高质量的代码
1. 边界条件,特殊输入等测试案例
清晰的思路
1. 枚举法
2. 复杂问题简单化(分治法和动态规划)
优化效率的能力
1. 寻找时间消耗或者空间消耗上可以优化的地方
2. 牺牲小小空间换取大的时间优化-文波那契数列
3. 递归法O(2^n),
4. 归纳法O(n)(f(1)+f(2)->f(3), f(2)+f(3)->f(4)),…, f(n-2)+f(n-1) = f(n)
5.
沟通能力和迁移学习能力
3. 应聘者提问
有针对的准备,预备三四个有技术含量的问题
4.代码
/*Good Practice 1*/
int StrToInt(char* string)
{
int sign = 1;
__int64 number;//declare as longlong int type
//protect against null point
if(NULL == string)
{
printf("Null pointer exception!");
return 0;
}
//consider sign of number, taking first non-digit character
if(*string == '+')
{
sign = 1;
++string;
}
if(*string == '-')
{
sign = -1;
++string;
}
//Return directly if starts from zero
if(*string == '0')
{
printf("Result is:0.");
return 0;
}
//stop on encountering ending character
while(*string != '\0')
{
//skip space and tab character
if(*string == ' ' || *string == '\t')
{
++string;
}
//core computation algorithm
number = 10*number + sign*(*string-'0');
//deal with int type overflow
if( (sign > 0 && number > INT_MAX) ||
(sign < 0 && number < INT_MIN) )
{
printf("The input numbers are overflow!");
break;
}
++string;
};
return number;
}