首页 > 实习面经汇总:腾讯、阿里、字节
头像
Cpp学渣本渣
编辑于 2021-06-16 16:20
+ 关注

实习面经汇总:腾讯、阿里、字节

前言

楼主背景成都某双非末流本科,科班,大三上期从嵌入式转行学后端(嵌入式从入门到入土),目前腾讯、阿里已offer,许愿字节hr面、offer!!!
先在成都找了一家十几个人的小公司面试,被拒绝。一气之下投了几个大厂,面试都很顺利,所以人不逼一下自己都不知道自己还有这本事??

腾讯客户端    腾讯会议

3/30 20:00 一面 40 min

深挖项目,投屏展示项目,找到自己觉得做起来比较困难的地方,进行展示说明。 30min

项目用到的设计模式,展示说明一下

有无windows开发经验   无

qt的信号与槽机制的优点与缺点(项目用到了qt)

项目里面是否用到了c++11    没有

c++11的新特性,move的作用,说一说

之前move说到了智能指针,说一下shared_ptr底层怎么实现的

堆、栈,说一下

算法:

转置链表

反问:

实习生进去大概做些什么样的东西?       简单开发
大概会用什么工具?        vs qt 等等
用到什么语言?      主要是C++,其它语言相信你C++都会了,应该学得很快。


3/31 21:00 二面 35min

说一下项目难点,优点。15min

我们会议聊天的数据是怎么传输的

函数调用的栈过程

虚函数实现原理

类的内存分布规律,说了字节对齐、空类大小

操作系统如何管理内存

你说所有程序共享0-3G,是怎么实现互不干扰的

虚拟内存如何实现的

平时有没有遇到过内存崩溃的场景?怎么解决的?

有用过dump解决内存崩溃吗?回答了解但是没用过

dump是怎么实现地址与汇编代码的映射的?敷衍了一下

会些什么设计模式,说一说。  说了单例、观察者

qt 的 win32 项目创建的过程,细节

毕业以后怎么打算

就业地点有没有限制

反问:

base在哪? 北京、深圳都有,就成都没有
我需要改进的地方?项目经历、客户端开发要去了解win32如何构建


4/7 16:00 三面   30min

介绍项目、项目有些细节如何实现 12min

tcp为什么是三次握手

ddos攻击是如何攻击的?

ddos主要攻击tcp连接的哪个过程

qt用过哪些界面

qt一个list里面如果有几千个项,需要为每个项建立对象吗?

qt自定义控制需要实现哪些东西?

说说对qt信号与槽的理解

内存泄漏是怎么回事?

知道什么检测内存泄漏的的工具吗?valgrind

valgrind原理知道吗?

平时写c++用些什么工具

vscode有用过吗

如何打断点?知道哪些断点方式?条件断点、数据断点?

近期有在学什么东西?答shell脚本。问为什么学这个?

智力题:8个球,一个天平,有一个球要重一点,如何用最少的次数找出重的那一个?

专业排名前多少?哪些课程学得好?哪些学得不好,为什么?

近期做得非常不错的一件事?

自己性格怎么样?有什么需要改变的地方吗?

最快什么时候能来实习?

未来规划是什么?

反问:

base在哪?主要深圳,北京也有

我有哪些需要改进的地方?基础挺扎实,qt的底层需要了解

总结:腾讯面试很友好,但流程相对较慢,客户端岗位,不是非常喜欢,所以应该会拒绝。


阿里C++工程师    优酷

4/12 14:00 一面   57min

虚表知道吗?深挖其实现细节:什么时候生成,如何生成,如何覆盖 。。。

锁了解吗?说了互斥说、读写锁、自旋锁。(面试官主要想听互斥与与自旋锁的区别)。

自旋锁与互斥锁各自的应用场景?

知道http协议吗?浏览器输入一个url发生了什么?

dns解析协议是什么层?基于udp还是tcp?http是什么层?tcp、udp是什么层?

http各种版本说一说?

如果使用的是http1.0,发送完毕后会怎么样?答关闭连接。又问:哪方发起关闭?关闭过程?为什么要TIME_WAIT?为什么要2MSL?

http中大文件如何传输的?答分包处理。又问:在tcp层面如何传输的?答了滑动窗口、缓冲区、拥塞控制。又问:拥塞控制说一说?

为什么要做这个项目?

项目里面buffer如何实现的?可以如何改进?环形缓冲区如何实现?为什么当时没有这样改进?

buffer是单线程的吧?如何实现多线程控制?如何不加锁多线程控制?cas了解吗?全称是什么?如何实现的?答了乐观锁的思想,最后面试官好像不大满意。

mysql了解吗?binlog、redolog是做什么的?早期没有innodb的时候还有什么引擎?innodb与myisam的区别?(八股文背到一半被中断施法-_-)

mysql如何组织文件?答索引。又问:索引数据结构?B+树的优点?(答到磁盘io就终止,他想了解这个)

打开一个文件如何读入数据?扯到了DMA,又问:DMA是什么?需要cpu干预吗?读取开始和结束时会通知内核吗?如何通知?(中断)

上面不小心扯到了磁盘调试算法(嘴贱,还没复习到这来),又问:说一说你了解的磁盘调试算法?磁盘读取时如何索引到文件位置?

另一个项目是课程设计吗?项目里面的哈夫曼算法是如何实现的 ?哈夫曼算法的特点?

图了解吗?最短路径算法如何实现?说了Dijkstra,又问:还有其它算法吗?Dijkstra复杂度如何?现在还能写出来吗?说一说Dijkstra如何选取的?

stl里面的vector用过吗?vector删除一个迭代器指向的元素后,会发生什么?答后面的迭代器失效

设计模式了解哪些?说一说单例模式?说了半天,不小心说到了因为指令重排导致双检查锁也有问题。又问:指令重排主要是哪三条指令?(申请空间、构造、指针赋值)。双检查锁的论文看过吗?开始忘了指针赋值这一步。面试官一直引导这个过程,试图让我记起,最后终于是记起来了。又问:指令重排如何导致它出现问题?

发链接做题:

char* itoa(int v, char * str, int base);     开始不是写的base,而是f,让我猜是想干什么。。猜到了。

十进制转base进制,存入字符串。很多细节没考虑到,基本是指导一下改一下
一、十进制以后的abcdef没考虑到
二、除法取余后,未将字符串反转
三、未考虑到负数
四、未考虑到负数 v = -v 过程的溢出问题
五、未考虑到负数时字符串的反转时的起始坐标
六、好像最后还有问题。。。。时间到了结束了

base:北京、上海,你填的意向是成都,能接受来北京上海这边吗?当然能接受

面试官部门是优酷的,主要做数据处理,难怪对数据部分问得这么多。

最后问有什么反问的,我说你已经说了。

这是面过最恐怖的一次面试,拿着简历,挨着问,问得非常非常细节,基本每一步都要深挖,基础一定要扎实啊。。。。


4/13 16:30 二面   22min 电话突击

项目难点说一说

OSI七层模型

哪些网络设备跑在网络层?

应用层跑了哪些协议?

说一说对DNS的理解,怎么运作?ip与域名的对应关系是谁写进去的?(运营商)

TCP和UDP有什么区别?

哪些服务用TCP,哪些服务用UDP?

普通文件压缩?音频文件压缩?视频文件压缩?(真的一点也不会,尬了半天)

对缓存了解多少?有哪些缓存淘汰算法?说一说。说了LRU的原理

浏览器输入一个url,发生了什么?

假设网址是https://,比普通http://多哪些步骤?直接背了一遍https握手过程

估计什么时候能来实习?

期望工作地点有要求吗?

总结:无三面,直通hr,总感觉去了转正概率低。感觉比较边缘化,很大可能去字节。


字节后端    技术中台

4/11 15:00 一面   57min

介绍项目 2min

说一说对io多路复用的理解

说一下epoll、epoll的数据结构

浏览器输入url后发生了什么

mysql索引用的什么

说一说B+树的优点,和hash索引相比怎么样?

mysql聚集索引和非聚集索引的区别

进程和线程的区别

算法题,每道给20min:

1、一亿以内的中文转数字,如:五千四百三十万四千零二十一  ------>  54304021
2、leetcode 1143 最长公共子序列。写完后又问:如果要求公共子序列是什么,怎么写?(乱说了一通)

平时有写过ACM题吗?答只刷了leetcode

什么时候能来实习?

能实习多久?


4/20 14:00 二面   48min

操作系统页面转换算法有哪些?

说一说LRU如何实现,时间复杂度如何?

进程间的通信方式有哪些?你用过哪些?管道如何使用的?

linux的kill命令的做什么用的? 发送信号

linux如何查找进程? ps -aux | grep …

TCP四次挥手过程?服务器最后一个FIN怎么确定丢失了?定时器定时多久?

SYN泛洪攻击是如何攻击的?服务器如何防御?(TCP代理、TCP源探测)

哈希如何实现?冲突如何解决?扩容实现过程?旧数据如何搬移?

HTTP状态码:500、404、502、301

cookie和session是用来做什么的?有什么区别?用session是因为它相比cookie更安全吗?客户端会保存session吗?

HTTPS和HTTP有什么区别?说一说HTTPS握手的过程?密钥商量过程和数据传输过程分别用的哪种加密算法?对称密钥和非对称密钥谁更快?为什么用非对称密钥商量密钥?

mysql默认引擎是什么?

主键索引和非主键索引有什么区别?

事务的特性有哪些?

事务的持久性如何实现?redo log 和 bin log分别是什么?它们都是用来实现持久性的吗?如何用redo log来恢复?

事务的原子性如何实现?答undo log 。如何用它来实现原子性?

事务的一致性如何实现?答四种隔离级别。隔离级别不是隔离性里面的东西吗?答也能对一致性起作用。

redis了解过吗?没有,不能给自己挖坑。。。

算法题:

1、剑指offer 54 二叉树搜索树的第k大节点
2、leetcode 15 三数之和,a+b+c=0

可以实习多久?

来北京没问题吧?


4/21 11:00 三面   56min

挑一个最有技术含量的项目说一说 5min

有没有对项目进行过压测?怎么样?

epoll边缘触发和水平触发的区别?

项目的http报文解析过程?

epoll相比select、poll的优点?

epoll的底层是如何实现的?什么数据结构?

操作系统的多任务是如何实现的?

操作系统会为每个进程分配哪些资源?

时间片轮转的时候会做些什么?

虚拟内存为什么会被提出?是如何映射到物理地址的?

操作系统有多种存储结构,由速度从快到慢分别解释?缓存、内存、硬盘、外设

局部性原理具体是怎么样的?

日常用什么语言编程?C++

C++的vector是如何实现的?

智能指针为什么会被提出?说一说几种智能指针?

算法题:

一、算法题:一个队列,实现enque deque max,O(1)时间获取max,其它操作的时间复杂度尽可能的低。
//一开始想到了用两个队列,但是方法不对,后来自己又想到了用单调队列实现O(1)max
二、概率题:两人掷硬币,一人掷一次,正面向上的赢。先掷的人赢的概率是多少?
//2/3
三、情景题:长链接如何转成短链接。
//说了用进制转换的策略,面试官肯定了这个方法,最后提示还可以在服务端用映射表实现。
//又提到了转换后的链接是服务器回发找到的资源吗?还是什么?说了重定向

日常会在什么地方学习?

未来怎么样规划学习新东西?

redis了解吗?说只学了一丢丢,不敢给自己挖坑。

实习时间如何规划的?

有面试过哪些公司?有哪些有offer?

反问:

部门用什么样的技术栈?
主要go语言、、、、、、balabala

总结:字节的面试是比较难顶的,每轮至少两道算法题打底,好在运气不错。许愿hr面试!!许愿offer!



最后:如果不清楚自己该如何复习,如何准备的话,推荐大家也可以尝试一些专门的课程,比如牛客就有C++秋招集训营,基础知识和做项目都包括在内,能少走弯路,在更短时间内达到一个通过笔试和面试的水平。


------------------------------
2021/6/16 补充:字节流程走完了,但是offer审批没通过,到底什么原因也不好深究了,自行体会。最后去了阿里。

更多模拟面试

全部评论

(8) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

热门推荐