C++后台研发工程师2018年BAT华为网易等面经总结

如果我做不了大事,我至少能把小事做得大气一点。——马丁·路德·金

先介绍下个人情况,国内top5本硕科班,英特尔和腾讯两段实习经历,几个项目和还没中的论文QVQ。目前提前批和内推已经基本结束,有意向的offer也有了几个,现整理下C++后台的面经(包括春季实习招聘)合集回馈各位牛友。有些问题可能时间久远记得不太清楚了,主要给大家看下面试官都问了哪些问题的类型吧,话不多说黑喂狗! 

1.阿里-蚂蚁金服 

一面: 

扣简历项目细节 

linux下一个write()函数的具体过程 

介绍下page cache和buffer cache ,它们有什么区别 

fysnc调用哪个内核模块,你熟悉哪个内核模块 

free 指令怎么用 

select、epoll,以及边缘触发、水平触发 

TCP三次握手、四次挥手,time wait解释一下 

线程和进程的区别 

浏览器输入一个网址,得到页面的具体过程。 

JAVA会吗(不会你别问) 

数据库用过哪些(没用过你别问),数据库的索引介绍一下(。。。) 

单链表翻转,如果只用指针的话怎么翻转 

找100亿个数中最小的1000个数 

二面: 

扣简历项目细节 

JAVA会吗(真的不会) 

那问点C++吧:多态如何实现、auto如何实现、编译器对extern修饰的变量会如何处理、一个空对象的大小是多少、函数重载时编译器是如何工作的、内存对齐的原则 

分布式系统中CAP原则,给出具体的场景 

用过哪些分布式的系统,解决了什么问题 

B+树和红黑树的特点,为什么红黑树能保持较好的平衡性 

介绍下哈希表的原理。 

如果一个进程有异常如何监控(答了用htop查看cup和内存的适应状况) 

两个文件各有100亿个URL,如何找到两个文件中相同的URL 

三面: 

扣简历项目细节 

我们这边JAVA用的多(我会好好学的!) 

说下为什么会出现死锁,如何避免 

介绍下读写锁,读写锁适用于什么场景 

udp和tcp的区别,如何用udp实现tcp 

五种I/O模型介绍一下

四面: 

​扣简历项目细节 

你简历上说参加过数模,介绍下当时的情况 

你论文里面解决的问题用了哪些算法 

马尔科夫链介绍一下 

你平常会学习什么算法(老哥别问了,我知道你肯定是做算法的了。。) 

2.腾讯-IEG游戏部门 

一面: 

扣简历项目细节 

自己做过游戏吗?难点在哪里? 

论文里面的问题来源,如何解决 

判断两个链表相交,并找出交点 

linux的dd指令操作介绍一下 

进程通信的几种方式 

二面: 

扣简历项目细节、写了多少代码,是几个人做的 

C++ List STL底层数据结构 

Make file原理,流程,如何写? 

gdb原理,为什么能让程序停下来?coredump调过吗? 

手写个双向链表,带插入删除等功能 

bitmap用过吗,介绍一下可以使用在什么场景 

实习答辩面: 

介绍实习做的东西 

进程通信-共享内存怎么用 

实现无锁循环队列的基础是什么 

DDR4 2400MHZ的内存读写带宽多大?说说你方案性能比内存读写带宽差这么多的原因(被无情diss) 

unreal engine如何是进行内存管理的,介绍一下它处理一张贴图的流程? 

我看你用的是苹果手机,你用过它的延时摄影(现在叫慢动作)的功能吗,它为什么在几年前就可以处理4k 60fps画面产生的巨大数据流(我没用过谢谢) 

3.百度-AI芯片算法 

一面: 

扣简历项目细节 

FPGA和ASIC的区别 

LRU实现,以及几种优化 

TLB是什么,有什么用 

栈的逆序操作,不能使用额外的数据结构。 

网站server与client间的通信安全,攻击者伪造身份怎么办,中间人攻击怎么防御 

大数定律、贝叶斯公式 

CFS调度器介绍下,如果离线处理海量日志文件,如何设计CPU调度策略以提升性能 

排序,所有数字大小都在a到b之间,要求线性时间 

八个球,七个一样,一个重,最少几次找出那个重的 

二面: 

扣简历项目细节 

Linux的内存管理、slab机制介绍一下 

DMA操作介绍一下 

网卡的工作流程 

设计一个网站,实现多人同时抢票功能,保证先点击的人先进入页面,人满了或者没票了需拒绝 

如何实现多人抢红包的功能,保证高并发和数据的一致性 

实现一个聊天工具,在底层如何设计存储的数据信息,以支持类似微信聊天一样,支持删除信息(信息自己看不到,别人看得到)、撤回信息(信息自己看不到,别人看不到)和转发信息 

设计类似百度百科的功能,允许多个人同时阅读,保证只有一个人修改 

三面: 

(终于不用再介绍一次简历了) 

缺页中断什么时候会发生 

fork时的cow技术介绍一下 

说下你知道的内核中所有用到内存zero copy的地方 

写一个波浪子序列的题 

shell脚本怎么写 

linux中VFS是什么,和其他具体的文件系统如何配合工作的 

介绍下epoll和iocp 

4.华为-中央软件 

一面: 

给面试官介绍我简历上做的东西。。 

Nagle算法和tcp的拥塞控制 

项目用过哪些数据库吗(没用过,别问) 

二面: 

过一下简历项目 

如何理解软件的健壮性和高可靠性 

了解哪些linux内核的模块 

5.网易互娱-游戏部门 

实习面: 

简历项目(听完一个问题也没问。。) 

虚函数和多态如何实现的 

static函数能定义成虚函数吗 

shared_pointer了解吗,weak_pointer有什么作用 

std::move有什么用,介绍下左值和右值 

Const的用法 

常量指针和指针常量 

STL vector和map的底层结构 

链表排序,如何直接在链表上实现快排,如果元素类型任意呢? 

整数的二分查找,如果元素类型任意 

B+树如何保持树平衡的 

LINUX找特定的文本段 

LINUX如何杀掉特定名称的进程 

一个二维图,如何优化一个大圆包含尽量多的小圆 

深度优先+存子状态与动态规划的区别 

socket编程介绍一下 

6.拼多多-业务平台 

一面: 

扣简历项目细节 

socket里面send和recv流程具体介绍一下 

说一下你对系统cache的理解 

spark streaming介绍一下 

Linux一次系统调用的过程 

系统进程内存分配,虚拟地址,内核高位物理地址 

自旋锁、MCS锁 

软/硬连接下inode是如何工作的 

二面: 

过了一下简历项目 

JAVA会吗?(不会,别问) 

epoll介绍一下 

离线的用户行为日志分析系统可以怎么做,随便说一下 

如果线上运行的服务端崩溃了,如何排查原因并解决 (我说的是查log) 

最关键的log可能在服务端时崩溃时丢失,并没有真正写入磁盘,重启后无法查看该如何解决(承接上一个问题,我说的是log肯定还在内存里,可以实现一个常驻内存的日志系统来保存log) 

如果整个物理机器宕机了,内存里面的log也没了,如何解决(不知道。。实在没办法就只能强制每次产生日志就刷进磁盘。。) 

用过哪些数据库吗(没用过,别问)那redis的一致性哈希怎么实现的(。。。)数据库的四种隔离级别(。。。) 

设计模式里面装饰器介绍一下 

如何统计一个数的二进制有多少个1,logN的方法能想到吗? 

写个最长公共子序列的题 

以上几家公司问过的问题基本上是这些,大家如果有什么问题觉得我没说清楚的可以留言或者私信我,如果后面还面了其他公司我还会回来补充的。 

最后,也请大家帮忙把关下几个意向的offer(都还没正式谈钱): 

1.蚂蚁金服 

2.腾讯游戏 

3.百度AI芯片 

4.华为中软院 

5.拼多多

作者:

作者:TLIVE

来源:牛客网(www.nowcoder.com)

- 互联网名企笔试真题

- 校招求职笔经&面经

- 程序员/产品/运营求职实习信息

- 程序员/产品/运营学习交流社区

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏lgp20151222

rabbit的简单搭建,java使用rabbitmq queue的简单例子和一些坑

由于本人的码云太多太乱了,于是决定一个一个的整合到一个springboot项目里面。

52010
来自专栏三流程序员的挣扎

Android 优化——内存优化

在 GC 的过程中,其它在工作的线程会暂停,包括负责绘制的 UI 线程,并且在不同区域的内存释放速度也有一定的差异,但不管在哪个区域,都要到这次 GC 内存回收...

32210
来自专栏软件工程师成长笔记

Json字符串转JsonObject例子

Gson是Google发布的一个开源Java类库,能够很方便的在Java对象和JSON字符串之间进行序列化和反序列化。

4.8K30
来自专栏软件工程师成长笔记

用MINA实现UDP通信的例子

Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(当然,也可以提供JAVA 对象...

15820
来自专栏IT综合技术分享

基于docker可使用的api

https://github.com/spotify/docker-client

39830
来自专栏三流程序员的挣扎

RxAndroid 和 RxKotlin

RxAndroid 是在 RxJava 上的扩展,用法和 RxJava 一样。结构比较简单,主要用在 Android 上的线程切换。

87920
来自专栏Android研究院

组件化专题-APT实战

apt为何如此重要呢?现今越来越多的第三方库使用了apt技术,Dagger2、ButterKnife、ARouter等,在编译时根据annotation生成相关...

17610
来自专栏软件工程师成长笔记

MyBatis中Like语句使用方式(模糊查询)

1.5K10
来自专栏软件工程师成长笔记

《等你下课》让我们一起一步一步搭建RocketMQ可视化管理控制台

早晨起来,听着杰伦的新歌《等你下课》,轻快的旋律,动听的曲调,让我回想18岁的我........

24930
来自专栏三流程序员的挣扎

RxJava Single Completable Maybe 使用和源码阅读

Single 用于只发射一次数据就结束了,所以无需通过 onComplete 通知观察者,要么 onSuccess 要么 onError。

25720

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励