Steve Yegge:Google面试秘籍 阅读笔记

1.“你不能告诉面试官什么重要什么不重要。在任何公司都不行。”

2.“当你不需要更多解释就理解了面试官问题是哪一大类的时候,很多面试官都会觉得满意。” 即说明问题的类别比解释问题重要。

3.一些需要学习的技术性备忘:

数据结构和算法方面

①算法复杂度;

②n*log(n)复杂度排序算法的细节,快速排序,以及合并排序,他在快速排序不适用的情况下会非常有用;

③平衡二叉树,无论是红/黑树,伸展树还是AVL树。不要回避他!

④图,图结构是非常非常重要的,在内存中表达图有三种基本形式(对象和指针,矩阵,以及邻接表),你必须尝试学习更潮的算法,例如Dijkstra和A*

⑤特别了解NP完备性问题中最著名的几类,例如旅行销售员问题和背包问题,能在面试官隐蔽地问到你这类问题时把它识别出来。

数学

①组合数学和概率论

操作系统

①进程、线程和并发问题

②解锁、互斥、信号和管程,以及它们的工作原理

③死锁和活锁以及如何避免它们

④进程和线程分别需要什么资源,context切换如何进行,它们在操作系统以及底层硬件是如何初始化的

⑤了解一点计划任务。世界正向多核系统迈进,如果你不了解现代并发架构的话,你很快就会变成落后于时代的恐龙。

最好最实用的书是Doug Lea写的《Java并发编程》

编程

①最好是C++或者Java

②你应该对你擅长的编程语言了解很多细节

“实际上,我谈及的内容大部分是警示性的:如果你不了解它那就大事不妙了。”

之后blog回答以上的问题。

翻译文章地址

Steve Yegge Wiki

Steve Yegge's blog (VPN needed)

原文地址:https://www.cnblogs.com/jun14/p/3083385.html