C/C++面试重点

刚刚找完工作,对在面试中常被问到的问题进行记录,方便要校招的小伙伴们。

语言:

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.ReactorProactor半同步半异步

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)如何判断单链表是否有环?



你可能感兴趣的:(个人总结)