本文共 2468 字,大约阅读时间需要 8 分钟。
腾讯TEG后台开发
项目
select poll epoll 区别以及各自的应用场景首先回答都属于IO多路复用函数
select跨平台,基于轮询,epoll 基于linux内核红黑树
这道题目C++后台必考题目
shared_ptr 线程安全,引用计数如何实现的,原子操作的原理智能指针和原子操作,这个有一定难度
STL 迭代器什么情况下会失效,各个容器都说一下迭代器失效在C++ STL中也经常考察
当使用一个容器的insert或者erase函数通过迭代器插入或删除元素"可能"会导致迭代器失效,因此我们为了避免危险,应该获取insert或者erase返回的迭代器,以便用重新获取的新的有效的迭代器进行正确的操作
iter=vec.insert(iter);iter=vec.erase(iter);虚继承的实现原理,编译器是怎么使用虚继承解决菱形继承的问题的
考察多继承和虚继承
memory order内存序,lock-free? wait-free?这个问题难度较大
mysql中innodb和myisam的区别,行锁的实现原理 redis可以做什么,mysql buffer pool 可以做缓存吗? 三次握手,四次挥手三次握手,四次挥手校招必考
如何处理粘包数据包结构体设置为统一的消息头,消息头中有消息的长度,统一拆分包处理
编程:实现 double pow(double a, int n),要求考虑double和int的所有取值范围,若有溢出抛出异常。剑指offer 题目,如果可以将时间复杂度优化到O(logN)更好
解释一下内存池的概念
(Memory Pool)是一种方式。通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的并进而降低性能。
内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。这样做的一个显著优点是,使得内存分配效率得到提升。
动态数组如何实现?给他介绍了一下vector的实现。为什么扩容时是2倍。 没有连续空间如何实现?给他介绍了一下deque的实现。 设计一个随机数生成器生成给定概率的a,b,c 编程:实现 long avg(long *arr, int n)求平均数,要求考虑所有可能的取值范围。结果因为忘记了负数除法和取余的规则,写了半天没写完整就结束了
一面
项目
数据结构堆从完全二叉树, 最小堆,最大堆
什么函数可以被声明为虚函数除了构造函数,静态函数,内联函数不能声明为虚函数,其他都可以
析构函数可以抛出异常吗析构函数中不可以抛出异常
析构函数什么时候需要被定义为虚函数有继承的情况下,析构函数需要定义为虚函数
进程虚拟地址空间布局进程间通讯的方式
管道,套接字,消息队列,共享内存,信号量
多态的实现原理虚函数表和虚函数表指针
成员初始化列表概念,可以在成员初始化列表中初始化父类成员吗?为什么vector resize和reserve
重新设置vector的大小和反转vector
Linux IO模型,哪些属于同步IO,哪些属于异步IO编程:实现一个栈 编程:二叉树中序遍历,递归和非递归
桶排序
编程:因为上面的编程没做出来,所以又让写了一个支持并发读写的队列
多线程完全队列编程
topk单链表如何排序,时间复杂度,怎么推导的 如何判断二叉树是二叉搜索树按照定义递归的判断,或者从中序遍历为升序判断
如何调试core文件 如何调试多线程程序 内存泄漏怎么调试,valgrind怎么用 python了解吗 分布式了解吗?Hadoop hdfs?给他说了下paxos算法的流程项目,遇到的难点,怎么解决的,进行过压测吗
有什么印象比较深的课程吗?介绍一下? 平时怎么学习? 场景题:不好描述,总之是给了个场景问用什么数据结构比较好,答案是hash+queue 一致性hash 读写分离 redis哨兵系统选举过程 无锁编程,release acquire语义 实习时长
项目
编程:反转单向链表经典算法题
malloc和new的区别,free和delete。new一定会用到malloc吗?重载operator new考察new 和 malloc主要考察内存分配
内存泄漏,最后会怎么样?会对其他程序造成什么影响 水平触发和边缘触发,边缘触发怎么写 野指针的产生,危害,段错误怎么发生的?使用悬空指针一定会段错误吗?什么时候会,什么时候不会 多线程单线程区别,多线程一定比单线程快吗? 学过汇编吗? 编译和链接了解吗? 服务器程序阻塞IO怎么设计?知道早期Apache怎么做的吗? TCP UDP区别,介绍一下拥塞控制,丢包时为什么阈值会减半
二面全程针对项目问了一通,连接分发还有其他的方式吗?使用互斥锁和读写mysql会造成上下文切换吗?为什么不用无锁设计?建立连接还有其他的方式吗?了解nginx和apache的实现吗?(这个一面问了,可是后面还是没看,结果还是没答上来)读过什么开源的代码吗?感觉面试官没有找到技术的共同话题,然后就结束了。
介绍科研经历
介绍项目,一个一个的说 多线程程序内存布局 线程栈的大小,能调整吗?代码中怎么调整? 花生壳内网穿透原理 ARP协议介绍,ARP表建立的过程 TCP已经有了保活为什么还要有心跳包 纳格算法 虚拟化了解吗 汇编了解吗 未来的职业规划从问的问题来看,感觉是个偏底层的岗位,问了几次会汇编和虚拟化吗?因为不会所以感觉可能技术栈不太符合,最后也是被回绝了。
阿里云问的没有按照套路,以及太底层了
转载地址:http://hwrv.baihongyu.com/