清水河畔上大牛的面经
10年大牛的面经
- 直接上链接地址
- 专业技能的问题:
- Linux编程---所有互斥方法,多线程编程,进程间通信
- 网络编程---网络编程范式,非阻塞connect,TCP/IP(time_wait状态,如何更改这个状态的时间,OSI/TCP/IP)
- 简单数据结构和算法(用模板写)
- Linux的命令(写越多越好)-----很多东西需要讲原理和底层的实现
- 二面是问项目,问得很细,要讲到面试官弄懂为止,忽悠不得
- HR面中间可能会有小陷阱
- 问uboot代码的流程
- 操作系统同步互斥,大小端,设计模式算法
- 问题主要涉及项目、网络编程、shell脚本、算法数据库系统优化
- 超大量链接时的处理和IO效率的改进
- 算法要反复优化
- 首先自己分析可能的瓶颈,然后先从软件上优化,先改算法(B-, B+),然后想办法减少I/O次数,设计存储方式
- 然后硬件上优化,软件优化的技术和方法,如果找到了最优就要证明他为什么是最优
- 别人面试成功的原因总结:
- 一方面是自己比较淡定,面试时比较有自信,说话比较从容,没有紧张过
- 另一方面主要是平时的积累,每次回答问题时,同样的问题尽量回答得比别人更深些
- 一般人可能会给出答案,但更重要的是能够深挖一层,要么讲原理和底层实现,要么扩展到高级的用法。
- 别人是怎么积累的---看了N多Blog文(博客) 和 N多书;书单
- 《C和指针》
- 《C专家编程》
- 《C陷阱和缺陷》
- 《数据结构基础(C语言版)》
- 《深入理解计算机系统》
- 《Unix操作系统设计》
- 《Unix高级环境编程》
- 《Unix网络编程》
- 《Linux内核设计与实现》
- 《Linux设备驱动程序》
- 《Linux设备驱动开发详解》
- 《ARM嵌入式系统基础教程》
- 《ARM嵌入式系统实验教程(二)》
- 《ARM嵌入式系统软件开发实例(一)》
- 《ARM嵌入式Linux系统构建与驱动开发范例》
- 《ARM嵌入式MiniGUI初步与应用开发范例》
- 《嵌入式实时操作系统--uC/OS-II,第二版》
- 《基于嵌入式实时操作系统的程序设计技术》
- 《ARM嵌入式系统开发-软件设计与优化》
- 《C++ Primer》
- 《深度探索C++对象模型》
- 《effective C++》
- 《软件优化技术--IA-32平台的高性能手册(第二版)》
- 《多核程序设计--通过软件多线程提升性能》
- 《程序员面试宝典》
- 《TCP/IP详解(卷一)》
- 《嵌入式Linux应用开发完全手册》
- 《新一代视频压缩编码标准--H.264/AVC》
- 《跟我一起写makefile》
- 《μClinux源代码中Make文件完全解析——基于ARM开发平台》
- 《人月神话》
- 《more effective C++》
- 《headfirst设计模式》
- 《大话设计模式》
- 《STL源码剖析》
- 《敏捷软件开发:原则、模式与实践》
- 《算法导论》
- 《数据结构与算法分析C++描述(第三版》
- 看书有方法,必须选最经典易读的书;
- 其次读书时,一定要多想多实践,透过现象看本质,古人云“学而不思则罔,死而不学则殆”;
- 最后,读书一定要一鼓作气,一本书如果放一段时间在读,就必须得从头再来了。
- 搞嵌入式的开源项目
- 搞嵌入式的兄弟可以关注一下, 项目负责人(也是我的偶像,申大牛)的面经
- 嵌入式软件开发学习,看源码是一个很好的方式,通过阅读源码就可以更好的了解机制,尤其是学习linux,经典书配合源码是最佳组合,当然也要多实践。
- 这里有我最近参与的一个项目---嵌入式多核实时操作系统aCoral,你可以选择将这个作为学习,了解嵌入式的平台。
项目链接
互联网后台c++自学经验分享
- 互联网后台c++自学经验分享
- 复习准备过程
- 小甲鱼的c++视频教程----两天搞定
- 《c++ primer》
- 《鸟哥的私房菜,基础篇》
- 《c三剑客》
- 《tcp/ip详解卷一》---别人看了三遍
- 《CSAPP深入理解计算机系统》---神书,有空就看
- 《Unix环境高级编程》
- shell脚本语言,鸟哥私房菜偶尔翻翻,
- Makefile,cMake什么的还是要会滴,否则,看unp是蛋碎一地;
- 还有学了Python-入门 廖雪峰 + 简明Python教程神奇
- c++ boost库,现代操作系统
- effective c++, more effective c++,数据结构,http协议,了解了下数据库
- muduo,c++11新特性,effective c++, more effective c++;c++必知必会,stl源码剖析,设计模式
- c++ 11新特性,Unix网络编程模型的分析,
- tcp/ip相关难点问题分析理解,还有对算法的总结,常规也就那几种方法分治、贪心、回溯、动态规划什么的(总结的放后面)
- 看了nginx,看了部分后发现短时间有点来不及
- 特别推荐的书籍
- 深入理解计算机系统 csapp --- 这本书有两章节一定要细看,编译链接,结合gcc,makefile理解
- 现代操作系统 --- 个人感觉必看的
- c++必知必会 --- 感觉比effective c++更牛逼
- c++11新特性 -- 不错的书
- 图解http --- 面试很可能涉及,这个书很薄,还需要了解其他知识,这个比较浅显
- 设计模式 --- 常规的几个应该会,比如单例模式很容易被拿来手写
代码大全二 --- 有时间可看,无形中提升逼格,面试可能能用上
科班出身--(玩具版数据库,玩具版内存池,玩具版网络库)--C++后台开发
- 面经链接
- 准备过程:
- C++语言:《Effective C++》,《STL源码剖析》
- 操作系统:《Linux内核设计与实现》,偶尔看看《深入理解Linux内核》
- 网络:《TCP/IP》详解卷一 有关TCP和IP部分
- 数据结构:没有特别复习,刷了一遍《剑指offer》,读了一遍《程序员面试金典》
- 数据库:没有复习,主要是项目中用到的一些
- 其他:《程序员的自我修养》
- 其他
- unix网络编程和环境编程,linux常用指令,操作系统,数据结构和算法,c++primer,多线程,数据库等等。。
刷题用剑指offer,编程之美,cc150,leetcode,还有计算机的基础知识
大牛的C++面经
- 大牛的面经网址
- 干货
- 《剑指offer》、《C++ premier》、《Effective C++》、《STL源码解析》等C++基础;
- Windows、linux操作系统;
- TCP/IP网络;设计模式等程序设计经验;他人面经总提到的面试题目。
- 被推荐的链接
- TCP/IP:协议森林
- Linux系统
- Linux命令
- 经典排序算法
- 红黑树等
- 设计模式
- 核心竞争力:这点很重要,你一定要有擅长的方向。比如C++你擅长Linux编程,那就很有优势啊。
- 开始培养自己的特长吧,比如TCP/IP网络你理解的深。
- 面试算法题精讲
- 面试时沟通:
- 简单点:能一句话描述的就别啰嗦,抓重点。
- 直接点:只回答相关问题,无关问题不回答。比如问你觉得另一个公司怎么样?回答:不好意思,我只了解你们公司,那个公司不熟。
- 坚持己见:特别什么压力测试时坚持己见尤为重要。
总之,你一定掌握一些沟通技巧会有用。
刘成都的面经
- 大佬的面经
- 一定要,而且尽量要把项目搞懂----不然一面都过不了
- 准备过程:
- 《C++ Primerplus》
- 《大话数据结构》
- 《Linux高性能服务器编程》
- 2月份网上看视频学习数据库,一个星期可入门
- 《EffectiveC++》
- 《剑指offer》很重要很重要!!!一定要看,熟悉上面的编程题,大部分的手写代码都能在上面找到!!!
- 像Linux基本指令,Socket、多线程这些都是常问的,一定懂透。没看过设计模式和算法
- 找工作中的建议:
- 建议:一定及早确定自己方向,即使一时确定不了也不要将时间浪费在内耗中,而是把基础知识先学习起来!
- 各种渠道了解师兄师姐(不限于这些关系)找工作的信息,一定参加实习面试,别人怎么说都不如自己去体验,
- 一试就知道自己什么水准,可能的方向是什么了!
- 具体准备:5月份开始自己看书,主要是看书,看博客,百度/河畔搜面经。
- C++基础:C++ primer,百度或者cnblog里的C++常见面试题基本覆盖所有关于C++的问题了,effective c++,面向对象的SOLID原则等
- 其它基础:多线程,数据库(我看的MySQL),计算机网络,算法(大话数据结构和剑指offer,还有牛客上的算法技巧),常用设计模式,深入理解计算机原理,网络编程(没看完);
剑指offer上的题挺有用,最好刷两三遍,基本现场手撕算法不会太难
嵌入式的面经
- 面经的帖子
- 大疆完爆全场,不过仅此一家,能进大疆的都不用看我写的了。
- 华为给的还凑合,没有软开和算法高。
- 剩下的汇顶联发科海康什么的都挺高的。
- 好好学,一年成都税钱十几万,安安心心过日子
- 准备过程
- 做嵌入式的默认C语言都过关了,没过关可以看看C语言三剑客。
- 我最推崇的书是《深入理解计算机系统》,这本书从最底层处理器设计指令集,一直讲到了操作系统线程进程什么的,讲的非常细,非常值得仔细阅读。读完了就能应付大多数面试的技术问题了,不管是嵌入式下哪个细分方向都可以。
- 其次操作系统方面可以看看《linux程序设计》《Unix环境高级编程》
- 内核和驱动方面可以看看《LINUX设备驱动程序》《深入理解LINUX内核》
- 实践方面可以看看《嵌入式Linux应用开发完全手册》,买个韦东山的板子玩玩,或者买个树莓派玩玩。
找嵌入式中偏向C++的话还要看一下数据结构的书。
四无小硕的面经
- 四无成长记
- 本科时的操作系统、编译原理、计算机网络、数据结构、C语言、离散数学、软件工程,研究生时的Linux内核、Linux网络编程、组合数学、随机过程等专业课程的系统学习绝对是今后进行深造的助力。
- 准备过程
- 《算法导论》《UNIX环境高级编程》《UNIX网络编程(卷一)》
- 真正大牛的面经1
- 真正大牛的面经2
- dariusdong大神建议我去开发一个基于Nginx的服务器,原因在于,Nginx性能优秀、功能较多、较为轻量级故源码不是特别多、目前对它的源码分析的书籍也比较全面,并且使用C实现的,与我的擅长语言契合度很高。当然,我这里就不算是参加开源项目了,而是基于开源软件做一个自己的应用。当时就选择了一个切入点,搞了一段时间,不仅仅把功能实现了,还根据一些书籍以及网络上的指导读了不少源码,从这个开源软件的处理框架、实现机制中学了不少优秀的设计思想,还练习了Linux下C开发,进一步地熟悉了Linux的机制和网络编程的细节,这个经历为我的面试环节加分不少。当然我不是让大家都去搞Nginx,而是根据应聘职位、个人喜好、擅长语言,有针对性地做一些应用级别的东西,参与开源项目或者基于开源项目搞开发均可,不要把自己的编程经历仅仅局限在写几个小规模数百行的测试程序上面。
- 面试时问项目的问题时,必须对自己所做了如指掌,包括实现、优化等等,而做优化的过程更重要。
- 最好是通过项目锻炼,并把语法细节吃透。
- 我希望能好好学习一下C++或者JAVA这类面向对象语言,而且把Python这样的脚本语言的掌握更进一步。
- 大佬的博客
- 大佬的stackoverflow
- 简历准备:
- 一方面是选择一个合适的LaTex模版
你的技能一栏用LaTex特有的排版的LATEX标上LaTex, 并相应地修改,另一方面是字斟句酌。
- 面经链接