名企面试官精讲典型编程题


Comments

Contents

Chap 1. 面试的流程

  • 应聘者简历中如何介绍自己的项目?

    • 按照 STAR 模型来描述项目
    • Situation : 简短的项目背景
    • Task : 自己完成的任务。注意区分 参与负责
    • Action : 为完成任务自己做了那些工作,是怎么做的。
    • Result : 自己的贡献。
    • 栗子(作者自己在微软 Winforms 项目组的经历): Winforms 是微软 .NET 中一个成熟的 UI 平台(Situation)。本人的工作是在添加少量新功能之外主要负责维护已有的功能(Task)。新的功能主要让 Winforms 的控件风格和 Vista、Windows 7 的风格保持一致。在维护方面,对于较难的问题,我用 WinDbg 等工具进行调试(Action)。在过去的两年中,我共修改来超过 200 个 Bug(Result)。
  • 如何回答为什么跳槽?

    • 绝对禁止抱怨,不要流露负面情绪。绝对不能出现以下理由:

      1. 老板太苛刻
      2. 同事太难相处
      3. 加班太频繁
      4. 工资太低
    • 积极的思路 : 现在的工作做了一段时间,已经没有太多的激情了,因此希望寻找一份更有挑战性的工作。
    • 栗子1,作者从 Autodesk 跳槽到 MS : 我在 Autodesk 开发的软件 Civil 3D 是一款面向土木行业的设计软件。如果我想在现在的职位上得到提升,就必须加强土木行业的学习,可我对诸如计算土方量、道路设计等没有太多兴趣,因此出来寻找机会。
    • 栗子2,作者从 MS 去 思科 : 我在微软的工作主要是开发和维护 .NET 的 UI 平台 Winforms。 由于 Winforms 已经非常成熟,不需要添加多少新功能,因此我的大部分工作是维护和修改 Bug。两年下来,调试的能力得到了很大的提升,但长期如此,自己的软件开发和设计能力将得不到提高,因此想出来寻找可以设计和开发系统的职位。同时,我在过去几年里的工作都是开发桌面软件,对网络了解甚少,因此希望下一个工作能与网络相关。众所周知,思科是一家网络公司,这里的软件和系统或多或少都离不开网络,因此我对思科的职位很感兴趣。
  • 技术面试中应展现怎样的专业素质?

    • 基础知识扎实全面,包括编程语言、数据结构、算法等
    • 能写出正确的、完整的、robust 的高质量代码
    • 能思路清晰地分析、解决复杂问题
    • 能从时间、空间复杂度两个方面优化算法效率
    • 具备优秀的沟通能力、学习能力、发散思维能力
  • 应聘者提问环节?

    • 不要问和自己的职位没有关系的问题。比如问 公司未来五年的发展战略是什么
    • 不要问薪水
    • 不要立即打听面试结果
    • 问的问题必须是与应聘的职位或者项目相关的问题

Chap 2. 面试需要的基础知识

  • 关于编程语言

    以 C++ 为例,通常语言面试有 3 中类型。第一种是面试官直接问对 C++ 概念的理解,通常喜欢直接对 keywords 的理解程度。第二类就是面试官拿出准备好的代码,让应聘者分析代码的运行结果。这种题型选择的代码通常包含比较微妙复杂的语言特性。这要求应聘者对 C++ 的考点有着透彻的理解。第三类题型就是要求应聘者写代码定义一个类型或者实现类型中的成员函数。重点考察构造函数,析构函数和运算符重载。

  • 关于数据结构

    ArrayString 是两种最基本的数据结构,它们用连续内存分别存储着数字和字符。ListTree面试中出现频率最高的数据结构。由于操作 List 和 Tree 需要大量的指针,应聘者在解决相关问题的时候一定要留意代码的robust,否则容易出现程序崩溃的问题。Stack 是一个与 recursion algo 紧密联系的数据结构,同样 queue 也是与广度优先遍历算法紧密相关,深刻理解这两种数据结构有助于我们解决很多算法问题。

  • 关于算法

    有很多算法都可以用 recursion 和 loop 两种不同的方式实现,recursion 实现的代码比较简介,用 loop 的效率会比较高。在面试的时候,可以根据题目的特点,甚至和面试官讨论选择合适的方法编程。
    通常 sorting 和 search 是面试时考察算法的重点。在准备面试的时候,应该重点掌握 binary search, merge sort 和 quick sort 。
    如果面试题要求在二维数组上 search path,那么可以尝试用 回溯法。通常 回溯法 很适合用递归的代码实现。只有当面试官限定不能用recursion 实现的时候,再考虑用 stack 来模拟 recursion 的过程。
    如果面试题是求某个问题的最优解,并且该问题可以分为多个之问题。那么可以尝试使用 动态规划(Dynamic Programming, DP)。在用自上而下的recursion 思路去分析 DP 问题的时候,我们会发现之问题之间存在重叠的更小的子问题。To avoid unnecessary computation, 可以才用自上而下的 loop 来实现,在实现过程中把 子问题的最优解保存在数组中,然后再基于子问题的最优解计算大问题的解。如果面试官提醒说在分解子问题的时候是不是存在着某个特殊的选择,如果采用这个特殊的选择将一定得到最优解,那么通常面试官这样的提示往往意味着可能适用与 greedy algo。当然,面试官也会要求应聘者证明 greedy algo 最终可以得到最优解。
    最后,Bitwise operations 可以看作一类特殊的算法。直接对二进制的 01 进行操作,掌握起来也不难,因为一共就有 &,|,~,^,<<,>> 六种操作。

Chap 3. 高质量的代码

Chap 4. 解决面试题的思路

Chap 5. 优化时间和空间效率

Chap 6. 面试中的各项能力

【Book】剑指Offer -- By 何海涛相关推荐

  1. 剑指offer纪念版 何海涛著 部分纠正

    类似的再举一个例子: 题目:从上往下打印二叉树,何老师的代码如下(是没有问题的): void PrintFromTopToBottom(BinaryTreeNode* pRoot) {if(pRoot ...

  2. 何海涛——《剑指Offer:名企面试官精讲典型编程题》一书中IT名企经典面试题

    <剑指Offer> 一书源自该书作者何海涛坚持更新与编写的博客( http://zhedahht.blog.163.com/ ),该博客收集整理了大量如微软.Google等知名IT企业的经 ...

  3. 算法题001 剑指Offer 面试题三:二维数组中的查找

    剑指Offer题目1:二维数组中的查找 题目描述: http://ac.jobdu.com/problem.php?cid=1039&pid=0 在一个二维数组中,每一行都按照从左到右递增的顺 ...

  4. 【强烈推荐】《剑指Offer:名企面试官精讲典型编程题》一书中IT名企经典面试题

    各位程序猿: <剑指Offer> 一书源自该书作者何海涛坚持更新与编写的博客( http://zhedahht.blog.163.com/ ),该博客收集整理了大量如微软.Google等知 ...

  5. 【送书福利8本】YYDS《剑指Offer》,百万程序员人手一册

    程序员面试应该看什么书? 博文菌必须毫不犹豫地首推<剑指Offer>这本程序员面试圣经. 这可不是博文菌信口拈来的回答,看看广大网友们的反馈,就知道这是经过读者朋友们认证的事实!( PS: ...

  6. C#刷剑指Offer | 【常考题】最小的k个数

    [C#刷题]| 作者 / Edison Zhou 这是EdisonTalk的第299篇学习分享 我们来用之前学到的数据结构知识来刷<剑指Offer>的一些核心题目(精选了其中30+道题目) ...

  7. C#刷剑指Offer | 二叉树中和为某一值的路径

    [C#刷题]| 作者 / Edison Zhou 这是EdisonTalk的第292篇原创内容 我们来用之前学到的数据结构知识来刷<剑指Offer>的一些核心题目(精选了其中30+道题目) ...

  8. C#刷剑指Offer | 二叉搜索树的后序遍历序列

    [C#刷题]| 作者 / Edison Zhou 这是EdisonTalk的第289篇原创内容 我们来用之前学到的数据结构知识来刷<剑指Offer>的一些核心题目(精选了其中30+道题目) ...

  9. C#刷剑指Offer | 从上到下打印二叉树

    [C#刷题]| 作者 / Edison Zhou 这是EdisonTalk的第288篇原创内容 我们来用之前学到的数据结构知识来刷<剑指Offer>的一些核心题目(精选了其中30+道题目) ...

最新文章

  1. 求列表最大元素不用max_python3实现从一个无序列表中求取连续元素之和中最大的和...
  2. 宏碁电脑开启虚拟化技术_开启windows电脑的cpu虚拟化(VT)图文操作步骤
  3. jcifs java_Java 使用JCIFS访问网络文件共享的工具类
  4. fasttext的异步随机梯度下降导致结果不一致
  5. php 挂机,用php实现qq挂机
  6. SqlServer 添加用户 添加角色 分配权限
  7. 在 SAP BTP 里使用 SAP HANA Cloud 试用版 Trial Version 的一些限制
  8. .net3.5下的Socket通信框架
  9. oracle数据块dump信息,从数据块的dump信息能看出什么
  10. php上传文件 报的错误 $_FILES[‘file’]['error']
  11. 支持vxlan的服务器网卡,3台服务器互通vxlan
  12. 机器翻译先驱 Jaime Carbonell 去世,创立卡内基梅隆大学语言技术学院
  13. java微信公众号支付示例
  14. 新系统申请软件著作权详细操作说明
  15. Safari浏览器兼容性问题
  16. 安装了天正电气 服务器为空,解决 WIN7_64位系统安装 天正电气2014+CAD2008时,出现“error”或者:“不能访问到网络锁……”...
  17. 一个女留学生在美国的七年
  18. javascript编写_编写可读高效JavaScript代码的4个关键原则
  19. 凯云软件测试项目管理系统系统描述
  20. 远端服务器无响应 请联系网络供应商腾达,移动宽带连接腾达路由器显示 远端服务器无响应。请联系您的网络运营...

热门文章

  1. 三端或者3极气体放电管和二极气体放电管的差别:主要的对地放电,不是非地极的两个极性之间放电。二极适合差模类似485通信限制AB之间的电压,当然差模也可对地
  2. 【正点原子MP157连载】第十九章 OLED实验-摘自【正点原子】STM32MP1 M4裸机CubeIDE开发指南
  3. 这是一个开始,更是一个起点
  4. 民航飞行学院计算机分院云,ICC-数字课程云平台-中国民用航空飞行学院
  5. NAS如何设置硬盘休眠及定时开关机
  6. Infortrend两大主力存储GS/CS助抗击疫情一臂之力
  7. 刷脸认证如何实现人脸又快又准完成校验?
  8. 西江月 - 书到用时方恨少
  9. GamingAnywhere 一:GA初览
  10. ACrush楼天成回忆录