面试题汇总

不积跬步,无以至千里

Posted by Chen Yuwen on May 14, 2019

准备秋招啊,先挖个坑,把OneNote记录的一些面试题填过来,然后随时看到随时记录。
6.16大更新,参考了网上很多笔经面经。
最近被问过好多次怎么不写博客啊,emmmm……由于一些不可描述的原因,最近一直没抽出时间好好整理一下博客。鲁迅说过,时间就像那啥,挤挤总是有的,加之近来秋招提前批开始了,填坑也是势在必行,于是乎,反击从现在开始!

难度:A<B<C

1.C++

A1: 是否知道字节序? 网络字节序与主机字节序的差异(大小端字节序)?[字节序]
http://www.ruanyifeng.com/blog/2016/11/byte-order.html

A2: 是否知道字节对其, 为什么需要字节对齐? short int fload double对齐的方式[字节对齐]
https://www.cnblogs.com/clover-toeic/p/3853132.html

A3: [c基础]

char *p = new char[10];
printf("%d\n", sizeof(p));

考察指针与数组名的区别

A4: 几种主要stl容器背后的数据结构(数组、链表、RBTree)[stl]
A5:malloc是如何进行内存分配的./C++内存管理、内存池/malloc、new的区别 [内存分配]
malloc:深入理解计算机系统 9.9
A6: 变量的声明和定义有什么区别?
是否需要占用存储空间:

int a; //声明并且定义变量a
extern int a; //声明外部有一个变量a

A7:const的作用
A8:头文件中的 ifndef/define/endif 干什么用?
A9:STL常用容器,时间复杂度
A10:Virtual关键字,多态,虚函数、虚表指针、虚函数表;构造函数能不能是虚函数?析构函数能不能是虚函数?什么函数不能是虚函数?
https://blog.csdn.net/reille/article/details/6214165
A11:智能指针;shared_ptr实现原理?shared_ptr可能存在的问题(互相指向导致内存无法释放)以及解决方法(weak_ptr)?weak_ptr为什么能解决前述问题(weak_ptr实现原理)
A12:explicit关键字

B1: 在编写C/C++程序的时候是否可以改变编译器默认的字节对齐方式, 怎样实现[字节序]
#pragma pack(8)
B2: Intel X86采用什么字节序? 写代码判断机器是大小端?[字节序]
https://blog.csdn.net/K346K346/article/details/79053136
B3:关键字static的作用
B4: static变量的初始化顺序(同一个文件中,不同文件中)产生的问题以及解决方法
B5:介绍一下RTTI
B6: 左值引用、右值引用、万能引用

2.网络&Linux

A1:tcp3次握手具体过程,具体原因 [网络]
A2:time_wait出现在那个阶段, 哪一端 [网络]
A3:UDP相比TCP有什么优点 [网络]
A4: Linux常用命令[linux]
A5: Linux机器查看负载, 考察top; 创建某个子目录下的目录,考察make -p [linux]
A6: tcp4次释放的具体过程
A7:tcp3次握手具体过程,tcp4次释放的具体过程 [网络]
A8:七层协议 常用协议都在哪些层 [网络]
A9:TCP和UDP的区别 [网络]
A10: select和epoll区别 优势
A11: 长连接和短链接
A12: 文件权限 [linux]
A13: 远程拷贝 [linux]
A14: GCC调式 [linux]

B1: TCP流量控制,拥塞控制 [网络]
B2:TCP滑动窗口的实现机制 [网络]
B3: 阻塞与非阻塞, c/c++如何实现一个非阻塞server(考察下select or epoll, poll等)
B4: socket建立服务流程
B5:边缘触发和水平触发
B6: 慢启动
B7: Linux段页式内存管理
B8: 守护进程

C1: tcpdump, vmstat, pstree, awk等 [linux]

3.算法

A1: 排序算法,时间复杂度
A2: 快速排序/堆排序 时间复杂度,手撕快排、堆排

B1: 二叉树,如何找两个节点的最小公共节点(时间复杂度)
B2: Hash/多阶hash/一致性hash
B3: B树

C: LeetCode (emmm……)

4.项目

面试者在项目中担当的职责和负责的主要模块,基于这个模块的涉及细节询问,实现是否最优,是否有瓶颈,是否有更优的解决方案

5.Mysql

A1: 什么情况下需要索引,为什么能够提高查询速度?(考察是否理解索引)
A2: 联表操作
A3:索引问题
A4: innodb和mysam区别
A5:B树、B+树

B1:锁问题
B2:Mysql如何实现主从一致

6.操作系统

A1:进程间的通信方式
A2: 堆栈
A3: 读时共享,写时复制
A4: 虚拟内存的概念,虚拟地址到物理地址的映射过程

B1: 写代码测试存储器各级cache大小。
存储器山的概念,深入理解计算机系统封面

7.http协议

A1:输入www.qq.com到看到腾讯网首页, 里边经过了哪些步骤, 分别使用了一些什么网络协议?
A2:301与302 的区别
A3: https通信流程, 为什么能保证通信安全