分类于: 编程语言 计算机基础 互联网

简介

程序员面试白皮书

程序员面试白皮书 7.1分

资源最后更新于 2020-03-28 16:59:23

作者:逸超虾米笑笑董飞

出版社:出版社人民邮电出版社

出版日期:2015-11

ISBN:9787115401847

文件格式: pdf

标签: 计算机 编程 软件开发 面试 Programming

简介· · · · · ·

本书是程序员和IT从业人员的面试求职指南。本书遵从大多数面试参考图书的组织方式,结合实例,按照常见的数据结构、算法以及计算机基础知识进行章节划分。每一章的“知识要点”部分介绍章节涉及的相关知识点,回顾重要的基础知识点;“模式识别”部分给出一些例题,帮助大家总结解决相关问题的常见方法,并且通过分析问题中的关键信息,教授读者如何从题目中分析题型和解题方法。程序员面试是对于面试者计算机知识的全面检测,因此,本书设有专门的章节覆盖了网络、操作系统、编译器、算法和数据结构等各个领域的知识。本书作者来自硅谷一线的IT公司,书中包含了作者亲身的经历和体验,书中收集的题目部分来自互联网上分享的面试经验、在线编程网站leetcode,以及一些著名的面试参考资料。本书适合想要从事正规的程序员、架构师以及相关IT公司的专业人士和学生参考,尤其适合那些以一线IT外企或互联网公司为求职目标的读者阅读。逸超:竞赛保送国内Top2大学本科,毕业后前往加州大学攻读硕士学位,期间获得全额奖学金。毕业时获得十多个知名科技公司offer,现在在硅谷就职于顶尖科技公司,从事软件开发工作。擅长总结面试方法,乐于帮助朋友准备面试。虾米:国内TOP2高校毕业,赴美硕士毕业后跨专业应聘程序员工作,有一套自己的面试方法学。现于硅谷市值最高的公司之一任软件工程师,业余时间开设面试讲座,在圈内小有名气。笑笑:国内top2大学本科,UCSD计算机硕士。现苹果公司软件工程师。曾拿到多个硅谷顶级软件公司的offer,面试经验相当丰富。董飞:本科南开大学,硕士杜克大学计算机系毕业。在攻读硕士期间,从事跟Hadoop大数据相关的研究项目,在VLDB,SOCC顶尖数据库大会发表过论文, 先后在创业公司酷迅,百度基础架构组,Amazon 云计算部门,Linkedin担任高级工程师,负责过垂直搜索引擎,百度云计算平台研发,广告系统和在线教育平台的架构。在大数据领域业界研究多年,涉及Hadoop调优,分布式框架,Data Pipeline, 实时系统。目前在线教育创业公司Coursera从事数据工程师工作。在多年工作中,除了对技术的不懈追求,也积累了大量的面试经验,拿到北美热门公司10+ offer。在Linkedin期间,也积极参与面试过近200人,全公司前三的面试官,乐于分享并帮助很多人成功求职,实现目标。
提示:如遇问题或者链接还未及时添加,请联系小编 afeiship#qq.com(#换@),我们会尽快处理!

目录

  1. 前言
  2. 我的故事,你的故事
  3. 现状
  4. 目的
  5. 特色
  6. 第1章 简历、面试和Offer
  7. 1.1 简历
  8. 1.1.1 格式
  9. 1.1.2 内容安排
  10. 1.1.3 描述技巧
  11. 1.2 面试
  12. 1.2.1 HR
  13. 1.2.2 技术面试官
  14. 1.2.3 老板
  15. 1.3 Offer
  16. 1.4 常见问题
  17. 1.5 工具箱
  18. 第2章 数组和字符串
  19. 2.1 知识要点
  20. 2.1.1 数组
  21. 2.1.2 哈希表
  22. 2.1.3 String
  23. 2.2 模式识别
  24. 2.2.1 使用哈希表
  25. 2.2.2 利用哈希表实现动态规划的思想
  26. 2.2.3 String相关问题的处理技巧
  27. 2.3 工具箱
  28. 第3章 链表
  29. 3.1 知识要点
  30. 3.2 模式识别
  31. 3.2.1 链表的基本操作
  32. 3.2.2 哑节点
  33. 3.2.3 Runner和Chaser
  34. 3.2.4 遍历并处理节点
  35. 3.2.5 交换节点的问题
  36. 3.2.6 同时操作两个链表
  37. 3.2.7 倒序处理
  38. 3.3 工具箱
  39. 第4章 栈和队列
  40. 4.1 知识要点
  41. 4.1.1 栈
  42. 4.1.2 队列
  43. 4.2 模式识别
  44. 4.2.1 通过栈实现特殊顺序的读取
  45. 4.2.2 “Save for later”问题
  46. 4.2.3 用栈解决自上而下结构的问题
  47. 4.3 工具箱
  48. 第5章 树和图
  49. 5.1 知识要点
  50. 5.1.1 树
  51. 5.1.2 字典树
  52. 5.1.3 堆与优先队列
  53. 5.1.4 图
  54. 5.1.5 图的遍历
  55. 5.1.6 单源最短路径问题
  56. 5.1.7 任意两点之间的最短距离
  57. 5.2 模式识别
  58. 5.2.1 利用分而治之(D&C)策略判断树、图的性质
  59. 5.2.3 树和其他数据结构的相互转换
  60. 5.2.4 寻找特定节点
  61. 5.2.5 图的访问
  62. 5.3 工具箱
  63. 第6章 位操作
  64. 6.1 知识要点
  65. 6.2 模式识别
  66. 6.2.1 基本的位操作
  67. 6.2.2 位掩码
  68. 6.3 工具箱
  69. 第7章 面向对象的设计
  70. 7.1 知识要点
  71. 7.1.1 设计题解答要领
  72. 7.1.2 模拟面试
  73. 7.1.3 抽象、面向对象和解耦(Decoupling)
  74. 7.1.4 继承/组合/参数化类型
  75. 7.1.5 设计模式
  76. 7.2 模式识别
  77. 7.3 工具箱
  78. 第8章 递归和动态规划
  79. 8.1 知识要点
  80. 8.1.1 构建从子问题到最终目标的方法
  81. 8.1.2 递归的空间与时间成本
  82. 8.1.3 自底向上与自顶向下
  83. 8.1.4 算法策略
  84. 8.2 模式识别
  85. 8.2.1 用动态规划(自底向上)解决收敛结构问题
  86. 8.2.2 最长子序列类型的问题
  87. 8.2.3 用Memorization(自顶向下)解决收敛结构问题
  88. 8.2.4 用回溯法(自上而下)解决发散结构问题
  89. 8.2.5 用D&C策略解决独立子问题
  90. 第9章 排序和搜索
  91. 9.1 知识要点
  92. 9.1.1 常见的内排序算法
  93. 9.1.2 常见的外排序算法
  94. 9.1.3 快速选择算法
  95. 9.1.4 二分查找
  96. 9.2 模式识别
  97. 9.2.1 动态数据结构的维护
  98. 9.2.2 对于有序/部分有序容器的搜索,用二分查找
  99. 9.2.3 数据范围有限、离散的排序问题
  100. 9.2.4 Scalability & Memory Limits 问题
  101. 9.3 工具箱
  102. 第10章 测试
  103. 10.1 知识要点
  104. 10.1.1 测试现实世界的物体、软件或函数
  105. 10.1.2 故障排除
  106. 10.2 模式识别
  107. 10.3 工具箱
  108. 第11章 网络
  109. 11.1 知识要点
  110. 11.1.1 网络分层
  111. 11.1.2 路由
  112. 11.1.3 常用网络统计指标
  113. 11.1.4 TCP vs. UDP
  114. 11.2 模式识别
  115. 11.3 工具箱
  116. 第12章 计算机底层知识
  117. 12.1 知识要点
  118. 12.1.1 进程vs.线程
  119. 12.1.2 上下文切换
  120. 12.1.3 系统调用
  121. 12.1.4 Semaphore/Mutex
  122. 12.1.5 死锁
  123. 12.1.6 生产者消费者
  124. 12.1.7 进程间通信
  125. 12.1.8 逻辑地址/物理地址/虚拟内存
  126. 12.1.9 文件系统
  127. 12.1.10 实时vs.分时操作系统
  128. 12.1.11 编译器
  129. 看完了