博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面试题演练
阅读量:238 次
发布时间:2019-03-01

本文共 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

 

编程:实现一个栈

编程:二叉树中序遍历,递归和非递归

 

二面

epoll的底层实现,红黑树了解多少

编程:int nums[n],元素的范围在0到n^2之间,排序

桶排序

 

编程:因为上面的编程没做出来,所以又让写了一个支持并发读写的队列

多线程完全队列编程

topk
单链表如何排序,时间复杂度,怎么推导的

如何判断二叉树是二叉搜索树

按照定义递归的判断,或者从中序遍历为升序判断

如何调试core文件

如何调试多线程程序

内存泄漏怎么调试,valgrind怎么用

python了解吗

分布式了解吗?Hadoop hdfs?给他说了下paxos算法的流程

三面

项目,遇到的难点,怎么解决的,进行过压测吗

有什么印象比较深的课程吗?介绍一下?
平时怎么学习?

场景题:不好描述,总之是给了个场景问用什么数据结构比较好,答案是hash+queue

一致性hash

读写分离

redis哨兵系统选举过程

无锁编程,release acquire语义

实习时长

 

 

阿里云C++研发

一面

项目

编程:反转单向链表

经典算法题

malloc和new的区别,free和delete。new一定会用到malloc吗?重载operator new

考察new 和 malloc主要考察内存分配

内存泄漏,最后会怎么样?会对其他程序造成什么影响

水平触发和边缘触发,边缘触发怎么写

野指针的产生,危害,段错误怎么发生的?使用悬空指针一定会段错误吗?什么时候会,什么时候不会

多线程单线程区别,多线程一定比单线程快吗?

学过汇编吗?

编译和链接了解吗?

服务器程序阻塞IO怎么设计?知道早期Apache怎么做的吗?

TCP UDP区别,介绍一下拥塞控制,丢包时为什么阈值会减半

 

 

二面

 

二面全程针对项目问了一通,连接分发还有其他的方式吗?使用互斥锁和读写mysql会造成上下文切换吗?为什么不用无锁设计?建立连接还有其他的方式吗?了解nginx和apache的实现吗?(这个一面问了,可是后面还是没看,结果还是没答上来)读过什么开源的代码吗?感觉面试官没有找到技术的共同话题,然后就结束了。

 

 

三面

介绍科研经历

介绍项目,一个一个的说
多线程程序内存布局
线程栈的大小,能调整吗?代码中怎么调整?
花生壳内网穿透原理
ARP协议介绍,ARP表建立的过程
TCP已经有了保活为什么还要有心跳包
纳格算法
虚拟化了解吗
汇编了解吗
未来的职业规划

感受

从问的问题来看,感觉是个偏底层的岗位,问了几次会汇编和虚拟化吗?因为不会所以感觉可能技术栈不太符合,最后也是被回绝了。

 

阿里云问的没有按照套路,以及太底层了

 

转载地址:http://hwrv.baihongyu.com/

你可能感兴趣的文章