bat tn大摩微软等面经(0827)
中间件部门 研发岗
RT,有啥问题评论里面说~~(已经拿到意向书
刚下班,来补坑,不定时更新
先介绍背景,一本,大学开始学习计算机,成绩一般,大二投了网易游戏的实习被拒,实习的时候投了蚂蚁,面了六轮以为稳了(leader都加我微信开始让我学习些什么了),结果没hc了。投了腾讯,微信被拒(哪有晚上十点半面试,面到十二点的),后来捞起来要继续面,就拒绝了。秋招不怎么投了,下面基本是我的所有面试了,后面还有一个hulu应该会去面(不在学校 没法现场面亏大了),因为没打过acm,不抱什么希望,只是抱着仰望大神的心态。。
基本都是申的研发岗
还有什么想起来再更新,总的来说,leetcode不到200题,剑指offer刷完,我的面试经历里面聊项目比较多,另外因为我的博客近一年记录了150多篇博文,面试官很喜欢看着我的博客问我问题。。。(真奇怪)面试的话,六成运气,两成实力,两成心态吧。感觉自己还很多不足,也有在考虑要不要读个研涨涨姿势~~
秋招
百度
挺多意外的,比如面试官以为是视频面试(结果我在楼下等了很久很久),比如面试官以为我是面Java的(然后面试官现场拿起手机百度面试题,这很百度)。。
- 网络编程的问题,tcp与http,都说一下(我把tcp用的函数,状态转移,三次握手,四次握手,TIME_WAIT都说了);
- 数据库,索引;
- 服务器被多个肉机访问会怎样,https解决了什么问题;
- 说一下stl,c++11增加了哪些stl;
- 有没有做过多线程的项目(把自己上课写过的说了一下)
- 手写算法题
- 两个链表求交点;
- 实现LRU ***;
- 实现一个大小写不敏感的类;
- 智力题:一个概率不等的硬币,怎么利用这个硬币保证得到公平的结果;
蚂蚁——中间件
一面
- 进程与线程
- 线程同步方式
- 虚函数
- 数据结构,各种树
具体不大记得了,当时在打球,刚好休息喝水听到了电话(不然可能就要错过了)。
二面
- c++11新特性
- mvvc
- 虚函数
- CAS
- Innodb
- B tree与B+ tree
- 项目(谈了比较久)
在吃饭。。。然后约了晚上七八点的面试
三面
围绕项目展开
- 协同过滤算法
- 如何构建用户画像
- elasticsearch的相关度得分
- C++类型系统,泛型
- 用户态和内核态
- zero copy
- 有没有读过django源码,说一下(我写了django的项目)
- raft算法
剩下就在瞎扯了,比如在扯为什么我之前实习面了六面还是挂了(我咋知道呢),面试官说也看不出来为什么挂了,他说可能是发offer太晚了hc没了。。。
HR面
- 为什么不读研
- 如何评价自己
- 实习做了什么
- 家里是哪里人
- 有什么问题吗
腾讯面试
一面
问了项目的内容。。。
- 编译原理的一些基本知识;
- 数据库的索引,可不可以给每个列加索引;
- 数据结构诸如,b+树,b树,红黑树;
- Linux内核相关,内核中断,上下部,软中断,tasklet;
- docker与虚拟机;
二面
- 自己说一个并发场景,说一下会遇到的问题和解决方法;(懵逼)
- 如何从硬件机制保证中断实现;(持续懵逼)
- C/C++中关于内存可能遇到问题(特意指明除了内存泄露,还有什么问题),如何解决;(懵逼)
- 编译器在面对race condition时如何解决指令重排的问题(懵逼。。)
- 锁机制的硬件原理(真的懵逼)
- Linux内核的内存管理机制,分配机制;
- Linux内核的进程地址空间,如何将虚拟地址转化为物理地址;
- Linux的堆空间在释放之后是否可以访问,为什么;
- 虚函数表相应的对象释放之后,虚函数表会怎样?
- 如何排查越界访问,有什么解决方法;
- const成员在什么地方初始化的;
- inline函数能省略多少条指令;(懵逼)
- 函数返回地址存放在哪个寄存器;(我真特么不记得了)
- 如何验证volatile的作用;(通过看汇编?)
- x86的页表结构;
- tcp的流特性有哪些,有什么问题;
- http状态码;
- 服务端accept是在三次握手的哪个阶段;
- 如何将int64的整数转化为16进制形式的字符串;
我一个不是做硬件的。。实在不明白为什么问得这么hard(又难又偏向硬件,简历上也没相应的硬件项目,倒是博客有些Linux内核的文章,比较浅显那种)。而且我感觉面试官隐隐地看不起我们大三本,有几次出言嘲讽,甚至质疑我不是学计算机的。。
换了部门貌似,那算一面吧
一面:
- 项目
- 编译原理流程(词法分析,语法分析,抽象语法树blabla)
- yacc和bison如何实现词法和语法分析
- LL与LR推导
- C++的std::move
- 左值和右值区别,什么时候用左值,为什么
- epoll,select,poll
- epoll的LT模式和ET模式
- c++什么时候用初始化列表,和在构造函数初始化有什么区别
- 两道算法题:
- 环形加油站问题
- 乱序数组,每个元素偏移不超过k,排序
二面
- 纯聊项目
没了。。。。
现在加了面试官微信,说迟点会安排现场的终面。。
微软(苏州)
进校面的,很早了,七月初吧。。。面试官说下午只有我一个本科生过来。。。
笔试
- 两个链表,找出公共结点;
- 最大堆的插入删除;
一面
- 一个数组比如[1, 3, -4, 6, 5],返回一个数组[3, 6, 6, DEFAULT, DEFAULT],对应的位置的值为原数组数字后面第一个比它大的值,如果没有更大的值,则为默认值;
- 矩阵的BFS;
二面
- 介绍项目;
- 数独填充;
- 一个IP地址的字符串,检查合法性,返回二进制对应的十进制,比如"16.16.0.0",变成"00010000 00010000 00000000 00000000",这样一个32bit的二进制数对应的十进制数;
摩根斯坦利
onsite面
- 实习内容
- 游戏引擎为什么用c++多
- c++为什么性能相对较好
- 冒泡排序,快排,堆排
- 找出子字符串
其它不大记得了,全英面试,口语捉急,有些问题也没怎么听懂。。。。(小蛋糕真好吃
春招
春招拿了网易游戏和头条的offer,一个客户端一个后端(感觉要做全栈),在网易游戏实习了三个月,现在在宇宙条
网易游戏
具体不大记得了,没有做记录,因为学校学了图形学,所以问了很多图形学的东西,和一些项目的内容
头条
也没记录下太多
一面
头条一面面经,没有自我介绍,直接开始问,主要集中在Linux,数据库和网络编程,二十分钟
-
TCP的三次握手和四次握手过程。比较熟,问题不大。
-
进程的通讯方式,没说全,有些忘记了。问了多路复用,比较select和epoll的时候,不会epoll。。。
-
Linux如何实现共享内存,硬着头皮回答了,因为不知道怎么说。
-
数据库的ACID,隔离级别,索引的数据结构,有不少都不会,比如innodb的索引的数据结构。
-
正向***和反向***,之前看过nginx,所以有一定了解。
-
数据库的聚集索引,凭着上课的记忆回答了一下。
还有一些不大记得了,比较基础,但也比较偏向记忆性的内容,不是很难
连续三面
太多东西了,不大记得了。。
- 都有几道算法题,难度适中
1.1 打印二叉树从左视角看到节点
给定一颗普通二叉树,请输出二叉树左视角能看到的节点
1.2 Merge K Sorted Lists
Merge k sorted linked lists and return it as one sorted list.
Analyze and describe its complexity.
1.3 给出一个数字矩阵,寻找一条最长上升路径,每个位置只能向上下左右四个位置移动。
1.4 旋转数组寻找特定数字
-
智力题
一个岛上的居民会戴红白帽子两种帽子,每个人只能看到别人带什么帽子,不能知道自己戴什么帽子,并且互相之间不能交流。如果某人知道自己戴红帽子,当晚必须离开岛。有一天岛外来了一个人,说:“你们之中至少有一个人戴了红帽子”,请问之后的几天会发生什么事情? -
操作系统
进程、线程的区别 -
Python
Python中dict,是否线程安全
Python的生成器
Python如何管理内存
Python的多线程与多进程 -
C/C++
new/delete与malloc与free
stl中的map,是否线程安全
c++11 新标准介绍
模板特化
匿名函数,lambda -
数据结构
排序
tire树
哈希 -
数据库
MySQL的死锁问题,隔离级别
准备
书籍
感谢学校用的都是英文原版书作为教材,诸如数据结构与算法,操作系统、计算机网络、数据库原理、编译原理(龙书和虎书)都是很经典的书,为了考试都基本全看了。除了课本之外,其他的书:
- c++
看完的《cpp primer》,《effective cpp》;看了超过一半的《stl源码剖析》,《深度c++对象模型》 - 网络
《Unix网络编程》前面九章,《计算机网络——自顶向下》全部 - 操作系统
《Linux内核分析》全部,《深度理解计算机系统》三分之一 - 机器学习
《机器学习》(西瓜书)全部 - python
《fluent Python》看了一小部分,有针对看 - 算法
《算法导论》(看了很少。。。)
现在再看redis源码和golang的官方博客
网课
看的都是国外的学校的,基本都跟着做作业:
cmu15213,ucb的cs61a,Stanford的机器学习,cs131和编译原理,cs231n(看了一半)