Skip to content

Latest commit

 

History

History
109 lines (100 loc) · 5.16 KB

cppInterview12.md

File metadata and controls

109 lines (100 loc) · 5.16 KB

给自己一个小目标,每天都攻克一个知识点,一周后回来看看自己的进展

腾讯一面

  • 字节对齐以及为什么要字节对齐?字节对齐的相关规则,举例一个char型数据,在内存中会分配多少字节?
  • STL的了解情况(对连续型容器、关联型容器做了一些简单的介绍)
  • vector、list以及map、set这些的数据结构是怎么样的?(连续型内存,类似数组;红黑树)
  • 上述结构中插入数据和删除数据的时间复杂度是怎么样的?
  • 几个基本排序算法的最好时间复杂度以及平均复杂度?
  • 红黑树是什么样的数据结构?红黑树和B数的区别?
  • 变量的定义和声明有什么区别?声明的关键字?(extern?)
  • malloc的认识?new的具体实现机制是什么样的?(先分配内存,再调用构造函数)
  • 哈希冲突的解决算法?(开放地址法和拉链法)一致哈希了解吗?
  • 进程间的通信方式有哪些?互斥的具体原理?
  • 用过数据库吗?masql数据库中会用到哪些锁?
  • 谈一下对乐观锁和悲观锁的认识
  • 流量控制是怎么实现的?(滑动窗口)滑动窗口的大小具体是怎么变化的?
  • 慢启动曲线
  • https在平时的项目中有用到过吗?
  • 301和302的区别?
  • 三次握手的具体实现,time_wait原理?
  • 怎么求两个节点的最近公共祖先?
  • 100万个ip,找出最多的100个(内存放得下的时候,放不下的时候)
  • poll和epoll的区别
  • 一个项目中有很多模块,互相调用,应该怎么设计

腾讯二面

  • 隔一个删除一个map中的元素(主要考察迭代器的失效问题) , 虚函数如何实现的,画出内存图
  • Linux:文件系统 (这个我不会,没怎么问),进程线程区别,详细说明 管道、共享内存、信号量,在共享内存中如何使用mutex,1G共享内存,切割为很多记录,每个大小1K,多个进程访问,如何对每个记录进程保护 (不同同时读写一个记录)
  • select和epoll
  • nginx和apache对比

头条

  • 编译生成的二进制文件计算机是怎么识别的

  • cpp文件是怎么运行起来的

  • 优先队列的时间复杂度

  • 堆的维护时间复杂度

  • c++继承和虚函数

  • 虚函数的作用

  • tcp以什么保证可靠

  • tcp数据校验是怎么做的

  • 死锁怎么发生的

  • hash表是什么

  • 谈谈对归一化方法的了解

  • 找出排序数组中离第k个数最近的m个数,最近的意思是相减绝对值最小

  • 求数组中最小的10个数,用堆写

  • 分段分页机制

  • C++垃圾回收,shared_ptr的引用计数出现循环引用怎么办

  • C中的malloc和free做了哪些事情,free怎么知道free多长,C++中的delete又怎么知道delete多长

  • 问STL库,vector的内存管理,deque的内存管理,list的排序

阿里

  • PageRank
  • 两个数相乘,用什么数据结构(栈)
  • hashmap源码(我没看)。hashmap如何实现(广义链表)。
  • 找数组中加和为k的一组数。
阿里一面

1⃣️算法:

  • 在无序数组中找最大的K个数?
  • 对无序数组A[0:n-1]进行预处理(不能改变A[0:n-1]内元素的顺序),使得能在O(1)时间内快速找到子数组A[i:j]的和?
  • 在一个单向链表中实现快排?(快排效率以及内省排序)
  • 讲解一下内省排序的原理?

2⃣️C++基础

  • 用const修饰类成员函数的作用?
  • 能否在一个const成员函数中调用非const成员函数,为什么?
  • 模板的实现和声明是否一定要在同一个头文件中,为什么?

3⃣️Linux

  • 讲讲你对Linux内存的了解?
  • Linux内存的页表的作用是什么?
  • Linux内核地址空间的布局,内核地址空间是如何访问物理内存的?
阿里二面

1⃣️Linux

  • Linux中,怎样删除一个目录中最后一次修改时间在一个星期以前的所有文件,具体代码怎么写?
  • 如何写一个线程池?
  • 你觉得这个线程池有哪些可以优化的地方 2⃣️C++
  • 多态的作用是什么,它是怎样实现的?
  • C++中的override是什么,它是怎样实现的? 3⃣️ GDB
  • 多线程调试中会有coredump的情况,如何定位错误?
  • 警告错误位置和实际错误位置为什么会不一致,举例说明?
  • 谈谈你对buffer overflow的理解? 4⃣️Linux
  • 在Linux中,若父子进程中有一个异常终止,会对另一个进程有影响吗,为什么?
  • 如何修改你的程序,使其解决因异常终止而带来的影响? 5⃣️高并发
  • 假设在某一时刻由几万个并发请求同时产生,请设计一个方案来处理这种情况。

百度

百度二面
  • 特殊的地方,不允许使用STL容器,自己实现链表或是数组,要写出完整功能,包括构造析构函数。注意边界情况和内存泄漏

知乎总结

  • redis持久化机制
  • redis销毁方式机制
  • mq实现原理
  • C++虚函数
  • hash冲突的解决
  • memcached一致性哈希
  • socket函数select的缺陷
  • epoll模型
  • 同步互斥
  • 异步非阻塞
  • 回调的概念
  • 单向图最短路径
  • 动态规划算法

C++面试会问什么?