• 1. 软件开发面试经验分享
  • 2. 分享内容 1、推荐书籍 2、常见面试问题 3、经验总结
  • 3. 推荐书籍一、C/C++方面 (1) 《C++ Primer》 (2) 《C和指针》 (3) 《Effective C++》 (4) 《STL源码剖析》 (5) 《Effective STL》 (6) 《C++编程思想》二、数据结构和算法 (1) 《大话数据结构》 (2) 《算法导论》 (3) 《王道考研笔记- 数据结构》 (4) 《编程之美》 (5) 《剑指offer》 (6) LEETCODE网站
  • 4. 推荐书籍三、计算机网络 (1) 《计算机网络》 (2) 《TCP/IP协议栈 卷一》 (3) 《王道考研笔记- -计算机网络》 (4) 《图解HTTP》 (5) 《HTTP权威指南》 (6) 《UNIX网络编程》四、LINUX及操作系统 (1) 《操作系统原理》 (2) 《SHELL入门精通》 (3) 《王道考研笔记- 操作系统原理》 (4) 《LINUX高性能服务器 编程》 (5) 《鸟哥的LINUX私房菜》 (6) 《UNIX环境高级编程》 (7) 《深入理解LINUX内核》
  • 5. 推荐书籍五、数据库及其他 (1) 《MYSQL入门很简单》 (2) 《深入浅出MYSQL》 (3) 《数据库原理 -- 严冬梅版》 (4) 《深入理解NGINX:模 块开发与架构解析》 (5) 《LINUX多线程服务端 编程:muduo C++网络库》 (6) 《分布式系统原理与泛型》 (7) 《大话设计模式》 (8) 《C++程序员面试秘笈》
  • 6. 常见面试问题一、C/C++方面 1、说说C++中的多态及其实现; 2、volatile关键字; 3、带虚函数与否的空类大小; 4、字节对齐; 5、大小端字节序(如何判断); 6、#pragma once的作用? 7、static、const的用法? 8、拷贝构造函数与拷贝复制函数需要注意的事项? 9、回调函数、可重入函数; 10、智能指针、对象管理资源; 11、深拷贝和浅拷贝; 12、Singleton的正确写法; 13、类型大小(long、int等在32和64位系统中)。
  • 7. 常见面试问题二、STL方面 1、说说std::vector底层机制; 2、说说std::list的底层机制; 3、说说std::map的底层机制; 4、说说std::deque底层机制; 5、std::vector的自增长机制; 6、内存池的实现; 7、各容器的迭代器iterator; 8、std::vector插入和删除与std::list的区别;三、数据结构方面 1、二叉树前、中、后、层序遍历递归与非递归实现; 2、图的深搜和广搜; 3、两个栈实现一个队列(考虑线程安全); 4、B树与B+树的区别; 5、红黑树的性质; 6、AVL树的单旋转; 7、分别说一下7种内部排序; 8、有序表查找;
  • 8. 常见面试问题四、算法方面 1、逆转单链表; 2、链表带环检测以及环入口; 3、链表排序(nlogn不退化); 4、KMP字符串匹配; 5、词频统计(使用trie树); 6、lru cache(list+map); 7、100亿个整型数排序(外排); 8、100亿个数,找出其中最小的1万个数(构造大顶堆); 9、小范围数值排序(hash); 10、不重复数值排序(位图)。五、网络及其编程方面 1、IP分片和重组; 2、TCP的3次握手、4次断开及其状态转移; 3、timewait状态; 4、拥塞控制算法; 5、说一下地址栏输入一个URL,接下来所涉及到的全部协议,尽可能详细; 6、accept、connect调用; 7、select、epoll模型; 8、说说如何设计一个tcp服务器程序(迭代、并发范型);
  • 9. 常见面试问题六、LINUX及操作系统方面 1、进程和线程的区别; 2、堆和栈的区别; 3、fork的底层实现(写时拷贝); 4、fork和vfork的区别; 5、fork炸弹及其防御方法; 6、gdb、coredump文件使用; 7、查看机器负载的命令(top、ps、tcpdump、netstate、lsof等); 8、什么是inode; 9、硬链接和软链接的区别; 10、地址转换、段页式内存管理; 11、正则表达式七、数据库方面 1、说说数据库的4大范式; 2、说说事务的4个性质; 3、mysql中innodb和myisam这两者db引擎的区别(优点和缺点); 4、mysql的4个隔离级别以及脏读和幻读; 5、查询优化有哪些方法; 6、如何定位耗时过长的查询(使用慢查询日志); 7、视图、索引等的作用; 8、了解哪些NoSQL的db(非关系型数据库)?
  • 10. 我的面试经验总结一、技术面试官问项目的时候,应该怎么说? 1、项目的背景; 2、本人负责的模块; 3、本人在项目中所取得的成果。 二、技术面试官让你手写代码,应该怎么做? 1、问清楚面试官问题的边界条件、是否需要考虑异常安全和线程安全; 2、分析问题,通过画图和套例子表达出自己的思路; 3、整理完思路,开始写代码,按照前条件--不变式--后条件写代码; 4、命名清晰、意思明确,建议采用小驼峰命名法(int numOfProc(...)); 5、实在写不出来,让面试官给提示,如果还不行,才放弃。
  • 11. 常见面试问题八、开放性的问题 1、平时了解到的一些开源技术; 2、设计一个后台系统(比如让你设计微信红包的后台框架,你会怎么做); 3、设计一个游戏(可以使用MVC框架进行大致的设计); 4、在项目中遇到难题,你的解决途径是怎么样的; 5、说说C++和Python的区别; 6、你项目中C++写了多少行、用了什么框架、移植已用的还是自己搭建的? 7、项目中你觉得最难的问题在哪,如何解决这些问题?
  • 12. 我的面试经验总结三、技术面试官让你问他问题,应该问些什么? 1、如果通过面试,以后将从事哪方面的研发工作? 2、公司对新人有什么样的培训? 3、针对投递岗位的职位描述,提问一些职位相关的技术问题; 4、切记不要问技术面试官诸如薪资福利待遇、什么时候发offer等问题。 四、hr问你有没有拿到其他公司的offer,怎么回答? 1、你当前拥有一份对手公司的offer并且岗位类似,那如实作答即可; 2、如果你没有任何的offer,如实回答后,说说对这个公司的了解和热爱; 3、如果你拥有一份跟当前岗位不一样的offer,那可以选择不说;
  • 13. 我的面试经验总结五、hr问你有没有男朋友或者女朋友,他们工作地在哪,意图何在? 1、工作稳定性; 2、选择本公司所在城市的可能性。 六、面试中如何表现自己? 1、面试前,查清楚应聘公司的文化,表现出与之相呼应的行为和态度。 2、一般公司都看重技术面试者这几点:热情、技术基础和潜力、快速学习的能力以及抗压能力等;
  • 14. 祝大家顺利,拿到适合自己的OFFER,谢谢。