刚刚找完工作,对在面试中常被问到的问题进行记录,方便要校招的小伙伴们。
语言:
1.struct 内存对齐
2.malloc new区别
3.malloc和其他内存分配函数底层实现
4.C++多态性(早绑定和晚绑定)
5.区分重载覆盖隐藏
6.虚拟继承的实现机制
7.几种强转的功能和区别
8.字符串函数底层实现
9.const和const的反义词
10. static
11. exclipit
12. 模板
13. STL
14. BOOT 智能指针
15. 引用的底层实现
数据结构:性能最主要 时间复杂度
1. 数据结构的类型;栈、
1. 排序:快排、归并、堆、哈希
2. 链表操作:
3. 大数据:哈希、位图 bitmap urlmap
4. 二叉树:
5. 树的递归和非递归遍历
6. map 和set
7. 红黑树、B树、B+树
8. 递归、分治、回溯、贪心、动态、规划
9. 堆和树的区别
Linux:
1. 基本工具的使用(GDB)
2. 程序、进程、线程概念、区别、联系
3. 权限管理
4. 进程间通信
5. shell编程
6. 正则表达式
7. 信号
8. 信号量
9. 锁
10. 条件变量
11. 三次握手 四次挥手(状态转移 TIME——WIAT)
12. OSI TCP
13. TCP和UDP区别 各层的协议
14. TCP的流量控制 差错控制 拥塞控制
15. HTTP协议
16. Socket
17. I/o复用:select
18.系统编程
19.系统状态
20.Kill
21.动态查看
22.看mysql的进程
23.查看系统命令:各种top命令
24.各种0Vmstat
25.Du df
26.Shell脚本
27.Cp命令底层实现
28.Tree实现
29.进程 线程各有什么资源 什么时候用多进程、多线程 注意什么问题
30.进程池 线程池实现
31.Fork 和 exec 底层实现
32.僵尸进程 守护进程 孤儿进程 init进程
33.进程间通信
34.线程共享的进程资源的方式
35.Locate命令:
36.Sendmsg 和recvmsg
37.Shotdown
38.TCP为什么可靠
39.网络编程框架
40.Reactor和Proactor半同步半异步
41.半同步半反应堆(Linux高性能服务器编程)
42.同步异步 非阻塞
43.Epoll底层实现 为什么要用红黑树
操作系统:
1. 内存管理(非常重要)
2. 页表
3. 进程调度
4. 寄存器知识:
MySql :
1. 内部数据的存储和索引
2. 非关系型数据库
3.数据库:
4.存储引擎
5.Mysql的锁机制
6.Mysql的复制
7.关系范式(几个)
8.事务及特点
9.Mysql查询优化(非常重要)
各种池化技术:进程池 线程池 对象池 连接池 内存池
开源产品:iedis memcahed mysqlnginx
(1)struct 与 class 的区别。
(2)error 与 exception 的区别。
(3)常见的软件测试方法有哪些。
(4)int *const p,int const *p,int const *const p 的区别。
(5)在字符串 STR 中找字符串 substr 的个数。
(6)将字符串右移 N 位。
(7)inline 的作用。
(8)二维数组的表示。
(9)ifndef 的作用。
(10)KMP 算法。
(11)函数调用方式。
(12)重载函数。
(13)构造函数与析构函数。
(14)合并两个有序链表。
(15)逻辑推理—智力题。
(16)100 亿条记录的文本文件,取出重复数最多的前 10 条。
(17)设计一个双向链表,并提供一个可根据值删除元素的函数。
(18)二叉树的多种遍历算法实现。
(19)有读和写两个线程和一个队列,读线程从队列中读数据,写
线程往队列中写数据。
(20)stack,heap,memory-pool。
(21)TCP 的流量控制和拥塞控制机制。
(22)写一个函数,返回一个字符串中只出现一次的第一个字符。
(23)求一个数组中第 k 大的数的位置。
(24)面向对象继承、多态问题,如多态的实现机制。
(25)内联函数什么时候不展开?
(26)成员初始化列表有什么作用?什么必须在成员初始化列表中
进行初始化?
(27)指针与引用的区别。
(28)创建空类时,哪些成员函数是系统默认的?
(29)有 10w 个 IP 段,这些 IP 段之间都不重合,随便给定一个 IP,
求出属于哪个 IP 段。
(30)网络编程(网络编程范式,非阻塞 connect) 。
(31)TCP/IP。
(32)Linux 的命令、原理以及底层实现。
(33)Linux 编程,包括所有互斥的方法、多线程编程、进程间通
信。
(34)一个一维数轴上有不同的线段,求重复最长的两个线段。例
如,a:1~3,b:2~7,c:2~8,最长重复是 b 和 c。
34 程序员面试笔试宝典
(39)cnwap 和 cnnet 的区别。
(40)设计一个内存管理策略,要求可以保证多线程时的安全,防
止内存越界等,效率不低于 malloc( )/free( )函数。
(41)排列组合问题。
(42)若有序表的关键字序列为(b, c, d, e, f, g, q, r, s, t) ,则在二分
查找关键字 b 的过程中,先后进行比较的关键字依次是什么?
(43)有一个虚拟存储系统,若进程在内存中占 3 页(开始时内存
为空) ,若采用先进出(FIFO)页面淘汰算法,当执行如下访问序列
后,1,2,3,4,5,1,2,5,1,2,3,4,5,会发生多少缺页?
(44)有一个顺序栈 S,元素 s1,s2,s3,s4,s5,s6 依次进栈,
如果 6 个元素的出栈顺序为 s2,s3,s4,s6,s5,s1,则顺序栈的容量
至少应该有多少?
(45)[0,2,1,4,3,9,5,8,6,7]是以数组形式存储的最小堆,删除堆顶元
素 0 后的结果是多少?
(46)某页式存储管理系统中,地址寄存器长度为 24 位,其中号
占 14 位,则主存的分块大小是多少字节?
(47)运算符重载。
(48)各种排序算法的使用与比较。
(49)一维数组默认初始化问题。
(50)const char* p1 = "hello"; char* const p2 = "world";有什么区
别?
(51)struct 与 class 有什么区别与联系?
(52)函数指针与指针函数的区别。
(53)指针数组与数组指针的区别。
(54)大端小端。
(55)虚函数问题。
(56)如何判断单链表是否有环?