上学的时候在网上看过一些面经,感觉面试都是“稀奇古怪”的题
当时恶补了各种宝典,深陷各种细枝末节的蜘蛛网中,直到阅读了一些经典书籍后才有所改观
特别是《深入理解计算机操作系统》这本书,给了我一种某些关节似乎被打通的感觉
很巧的是,有次和研究生同学一起吃饭时聊到这本书,很惊讶地发现他也是这种情况
他说本科虽然上了各种课程,了解各种数据结构,操作系统中的内存分配管理算法,计算机网络中的分层协议,但就是 “理不顺,不成体系”
但这本书在国外其实是为非计算机专业的同学介绍计算机工作原理的,说来非常惭愧,直到研究生才略懂一二
后来找工经历了的各种面试,总在想面试官也非神人,他们也曾经和我们一样作为毕业生,他们为什么问这些问题
这些问题最初是从哪里产生的,这些问题的源头在哪里? 应该说一部分是实际工作中用到的技术,而另一部分也就是单纯看书来的呗~ 很多面试题就是从这些经典书籍中凿出来的,甚至有的企业招人时直接列出了书单
下面列出自己学习和找工作时看过的一些书籍,希望对大家有帮助: 1. 编程语言: C/C++系 C语言最重要的部分莫过于指针,但国内大部分教程也就仅限于*的操作,这几本书对数组、指针、内存等特性都做了较深入的分析
《C与指针》 ☆☆☆☆ 《C陷阱与缺陷》☆☆☆☆ 《C专家编程》☆☆☆☆ 说C++是最复杂的语言也不为过,为了兼容C,很多设计错综复杂,但值得学习 《C++编程思想》☆☆☆☆ 基础教程,估计很多人是看《c++ primer》的,但确实没看过 《effective C/C++》☆☆☆☆☆ 讲得都是很重要的点 《More effective C/C++》 ☆☆☆☆ 楼上的升级版,有些难度 《C++对象模型》☆☆☆☆☆ 面试点太多,虚函数原理之类都出自这里 《effective stl》 用好stl,能省很大力气,写出短小精悍的代码 《stl 源码剖析》☆☆☆☆☆ 什么vecotr、双端队列面试也都来自这里 楼上的都是经典,需要消耗不少时间精力,都都是内功心法
下面是最常见面试题总结: 《高质量 C/C++编程指南》 ☆☆☆☆☆ 林锐博士的书,很精简, 值得推荐 《王道程序员求职宝典》 ☆☆☆☆ 总结的还可以,比较用心 《程序猿面试宝典》 被人诟病太深,我倒觉得扫一扫也未尝不可 如果上面列的书能花时间好好理解下,校招面试语言方面几本上应该没有什么压力~ Java系 Java的书看的不多,只看过几本,不瞎推荐
《Java编程思想》《C++编程思想》作者 《Effective Java》 书不厚,句句在点 《深入理解Java虚拟机》 java系不看虚拟机有点作死哈~ 2. 算法: leetcode 官网 刷题 ☆☆☆☆☆ 千言万语抵不过刷题,当前只刷了一半左右至今追悔莫及……后来得知北邮同学都刷好几遍,中科院同学还有专门的算法讨论班,高年级师兄师姐带低年级师弟师妹,真是太强大了~ 网上有leetcode题目分类,建议按照类别去刷
题目AC之后千万不要以为就完了,你的代码可能写的灰常烂~ 网上有leetcode完整的stl版答案,代码灰常精简,走过路过千万不要错过
《编程之美》☆☆☆☆☆ 太经典,再出现的概率太小,很多思路还是可以借鉴,比如二分、线性双端扫、堆~ 《剑指 offer》☆☆☆☆☆ leetcode配套 July 的 csdn 博客, 对算法题进行很多的总结 3. 操作系统: 《深入了解计算机操作系统》 ☆☆☆☆ 关键是自己能有个全局的把握 《unix 环境高级编程》☆☆☆☆ 个人认为不需要很细致地看,但比较重要的概念需要清楚: 进程,守护进程,线程,进程间通信,I/O等 4. 网络: 《TCP/IP 详解》 ☆☆☆ 重点看看TCP三次握手,可靠机制之类 《unix 网络编程 卷一》☆☆☆☆ 同样认为不需要很细,但重要概念需要理清: 阻塞、非阻塞、io多路复用、poll/epoll、同步/异步通信, 另外了解下协程coroutine 5. 设计模式: 《Head First 设计模式》 ☆☆☆☆☆ 非常推荐 《大话设计模式》 ☆☆☆ c#实现,看看故事 以上列出的仅仅是个人看过的一些书籍,当然还存在很多的好书等待大家去发现~