面试前一些非技术注意事项--程序员面试金典

0. 主要内容

  • 面试流程
  • 面试揭秘
  • 特殊情况
  • 面试之前
  • 行为面试题
  • 技术面试题
  • 录用通知及其他

1.面试流程

  • 面试流程:简历筛选——笔试——面试(内推可以直接进笔试,国内面试至少3轮,可能会有简历面,技术面,主管面,总监面,交叉面,HR面)——意向书——offer——体检——签约——入职
  • 面试题来源:这个与具体的面试官相关,面试官会根据简历内容或者自己预先准备好的题目进行各个维度的考察
  • 面试时间表与注意事项:约定好的面试时间一定不要迟到;面试前需要准备专业技能、项目介绍、算法题;适当时候做一些模拟面试;找过来人帮助修改简历;
  • 面试评估流程:会综合工作经验、企业文化契合度、编程技能和分析能力进行综合评估;
  • 答题情况:面试过程并不是以正确答案为标准,而是考察在解决问题过程中的各项能力,例如对于算法题考察思维是否缜密、基本算法和数据结构知识是否扎实、沟通交流能力、代码水平等
  • 着装规范:对于国企和外企建议正装面试,其他互联网公司简单大方整洁即可
  • 十大常见的错误
    (1)只在计算机上练习
    (2)不做行为面试题(项目经历、工作经历)演练
    (3)不做模拟面试训练
    (4)试图死记硬背答案
    (5)不大声说出你的答案
    (6)过于仓促
    (7)代码不够严谨
    (8)不做测试
    (9)修正错误漫不经心
    (10)轻言放弃
  • 常见问题解答
    (1)遇到熟悉的问题应该如实相告吗?
    应该。可彰显你的诚实品质;如果将正确答案脱口而出面试官会觉得可疑;
    (2)该使用什么编程语言?
    做算法首选python,服务端首选C++和Java,学有余力也可以关注Go,Shell等

2.面试揭秘

  • 不同公司面试的侧重点会有不同,面试前一定要充分了解所面公司的文化和自己所面试的岗位;
  • 多看看往届的面经,基本上一个公司的面试侧重点不会有太大的变化;
  • 上面都是辅助,要想收获offer一定要扎实自己的基础知识和技术栈,不仅会用还要明白其设计的原理甚至底层的源码;

3.特殊情况

  • 有工作经验求职者:主要侧重考察以前的工作内容
  • 测试人员:细心、基本的测试方法和框架要知道、较高的编程能力
  • 项目经理与产品经理:以客户为中心、多层次交流能力、对技术的热情、团队合作/领导能力
  • 技术主管与部门经理:团队合作、领导能力、把握轻重缓急、沟通能力

4.面试之前

  • 积累相关经验:常用的基础知识要深入了解、语言的特性要深入了解、一些常用的开发框架要熟悉用法和原理
  • 构建人际网络:多结交朋友,各方面的朋友都要结交,主动进行沟通
  • 写好简历:篇幅适中、工作经历一定要突出亮点(目标、用了什么技术、结果如何)、项目经历要描述细致突出效果

5.行为面试题

  • 准备工作:最难的部分;有什么收获;最有意思的部分;最难解的bug;最享受的过程;与团队冲突;你有哪些缺点;项目中最难处理的问题;应该问面试官的问题(真实问题:每天多少时间花费在写代码上?一周开几次会?整个团队的人员配比?如何做项目规划?有见地的问题:注意到你们使用X技术,请问你们是如何处理Y问题的?为什么你们公司采用X协议而不是Y协议?富有激情的问题:我对扩展性很感兴趣,有哪些机会可以学习这方面的知识?我对X技术不是太熟悉,不过听上去是个不错的方案,你能给我讲讲它的工作原理吗?)
  • 如何应对:力求具体,切忌自大;省略细枝末节(如果对方想知道可以详细描述);回答条理清晰(情景、行动、结果);

6.技术面试题

  • 技术准备
    (1)如何练习:尽量独立解题;在纸上编写算法代码;在纸上测试代码;将代码照原样输入计算机;
    (2)需要掌握的知识:数据结构(链表、二叉树、单词查找树、栈、队列、数组、散列表);算法(深度优先、广度优先、二分查找、归并排序、快速排序、树的插入和查找);概念(位操作、单例设计模式、工厂设计模式、内存、递归、大O时间复杂度)常见幂表(用来对内存大小和数据量进行判定)
    (3)针对不同语言各自的语言特性,如:Java的面向对象特征,反射,动态代理,锁机制,集合类等
  • 如何应对:提问(询问清楚面试题目的本质含义,确定好边界,如数据量、数据类型、复杂度要求);设计算法;编写伪代码;编写代码(多用数据结构,多进行模块化处理,一个小函数处理一个功能,多考虑扩展性不要将某些变量的值进行硬编码);测试;
  • 算法题的五种解法:1举例法,通过举例子的方式寻找规律,例如计算时针与分针之间的夹角;2模式匹配法,与自己以前了解的算法进行匹配类比,例如寻找旋转数组的最小数可以采用二分查找的方式;简化推广法,缩小数据规模寻求方法,分治和递归的思想;简单构造法,通过前面的结果构造后面的结果;数据结构头脑风暴,将自己能够想到的算法和数据结构都逐个的尝试一遍看是否可以解决,例如跟踪数组中的中位数,可以使用两个堆的方式进行。
  • 怎样才算好代码:正确;高效;简洁;易读;可维护(模块化、可扩展,多用数据结构,适当重用代码、灵活健壮、错误检查、适当考虑并发问题)

7.录用通知及其他

  • 如何处理录用与被拒绝情况:一定要给出合乎情理且不容置疑的理由。
  • 如何评估录用待遇:薪酬待遇的考量;职业发展;公司稳定与否;幸福指数;
  • 录用谈判:要理直气壮;最好手头有其他选择;提出具体的“要价”;开出比预期稍高的价码;不要只盯着薪酬;使用合适的方式。
  • 入职须知:指定时间表;打造坚实的人际网络;向经理寻求帮助;

你可能感兴趣的:(面试思考)