剑指Offer(第二版)面试题目分析与实现-面试的流程

面试官谈面试:

  • 初级程序员:算法和数据结构,应聘者的基本功;
  • 高级程序员:专业技能和项目经验;
  • 事先准备:对公司近况,项目情况有所了解;选好自己喜欢的岗位;准备好和面试官交流的问题;
  • 面试时的应对:面试的时候,需要放轻松;不要着急编写代码;了解清楚自己要解决的问题;多和面试官沟通;做一些整体的设计和规划;写好代码不要着急提交,要自我检查代码,找出可能出现的错误;
  • 技术岗位的意义:要有过硬的技术,按时完成任务的能力;

面试的形式:

  • 电话面试:准确描述问题和自己的思路;提前锻炼自身的口语能力,提高自身的英文水平;
  • 远程共享桌面、视频面试:理清解题的思路;注意代码命名和缩进习惯;能够提前想到单元测试;
  • 现场面试:注意自己的沟通能力;准备几个提问的问题;

面试的环节:

  • 行为面试:暖场,简单自我介绍(学习和实习经历),针对简历问问项目经历;应聘者所掌握的技能;
    • 简述项目背景;
    • 自己完成的任务;
    • 任务的解决方法;
    • 自己的贡献:(不要花太多时间介绍项目背景,要突出自己完成的工作和取得的成绩)
    • 可能问的问题:
      • 项目中碰到的最大问题是什么,你是怎么解决的?
      • 从这个项目中,你学到了什么?
      • 什么时候和其他团队人员有什么样的冲突,你们是怎么解决冲突的?
  • 技术面试:
    • 扎实的基础知识:编程语言(C++),数据结构,算法;
    • 能写高质量的代码:边界条件,特殊输入等至关重要的地方;(字符换转换整数,链表遍历问题)
    • 分析问题是思路清晰:通过画图,举例子和分析复杂问题等方法理清思路;
      • 先举几个简单的例子理解问题,形成自己的思路;
      • 用图形表示抽象的数据结构;
      • 尝试把复杂的问题,分解成若干子问题,再一一解决;(很多算法都需要这种抽象,递归,分治,动态规划等)
      • 遇到复杂问题的时候,我们要学会采用画图,举例和分解问题的方法来进行解决问题;
    • 能优化时间和空间效率:不断优化时间效率和空间效率,以找到最优解法;
      • 时间和内存消耗;不断优化自身代码,找到最优解;
      • 起初在求解问题的时候,可以找到一个简单的方法;(例如减治,分治和动态规划,贪心等思想,然后找到是否存在重叠子问题,独立子问题;是否能用分支限界法或者回溯法来进行求解)
      • 如何分析时间复杂度和空间复杂度;
      • 熟悉各种数据结构的优缺点,并能选择合适的数据结构来解决问题;
    • 学习和沟通相关的能力:
      • 主动向面试官提问,以弄清题目的要求,表现自己的沟通能力,展示自己良好的学习能力;
      • 知识迁移能力,如从青蛙跳台问题,类比到斐波那契函数;
  • 应聘者提问:
    • 在面试之前做好工作,每轮面试准备2-3个问题;
    • 面试官想通过面试者的问题,了解他最近关心的问题有哪些?
    • 寻找合适的面试问题:
      • 不要问和自己面试职位不相关的问题:如,公司最近的发展战略;
      • 不要问薪水问题,薪水问题可以问HR; 
      • 不要打听面试结果;
      • 可以问与应聘职位或者应聘项目相关的问题;根据面试官对项目背景的介绍和项目进展情况,找出一两个点来进行提问;

保持更新转载,请注明出处;更多内容请关注cnblogs.com/xuyaowen; 

posted @ 2020-04-01 11:18  Michael-Xu  阅读(265)  评论(0编辑  收藏  举报