技术1面(90min)
1)项目经历
2)hdfs架构,文件读写流程。
3)Hbase架构,原理。
4)为什么实习技术选型用druid,特点和优势在哪里,怎么实现的。
手撕代码:
1)sql求员工工资高于manager的人数。 SQL语句
2)sql筛选top10 SQL语句
3)排序链表合并 两个链表合并成一个这个比较简单
4)实现队列 数组或链表实现,一遍比较少考
技术二面(90min)
1)实习经历。
2)kafka消费者集群的作用,读取partition的方式
3)kafka怎么实现exactly once。
4)druid segment的切分。
5)三次握手,四次挥手。
6)cookie的作用和实现。
Session 是服务器用来跟踪用户的一种手段,每个 Session 都有一个唯一标识:Session ID。当服务器创建了一个 Session 时,给客户端发送的响应报文就包含了 Set-Cookie 字段,其中有一个名为 sid 的键值对,这个键值对就是 Session ID。客户端收到后就把 Cookie 保存在浏览器中,并且之后发送的请求报文都包含 Session ID。HTTP 就是 Session 和 Cookie 这两种方式一起合作来实现跟踪用户状态的,而 Session 用于服务器端,Cookie 用于客户端。
手撕代码
1)sql题(题目忘了)
2)java:提取json中的键值对。
3)dp最大连续子序列和。
技术三面-全程被怼(45min)
1)实习介绍。
2)数据清洗,怎么实现同一个timestamp值内的先后排序。
3)时序数据预测快手用户是否会再次登陆。
4)1G数据,1M内存,找出出现频次top100的单词。 MapReduce统计单词数,然后用最小堆求top100
5)笔试时C++和操作系统的题基本没对多少,解释原因。
被怼:
1)数据清洗时没有想到去源头解决问题,老是在不停迭代处理现有数据。答:因为原始数据上报不是我能决定的,是其他部门上报,我没有要求他们的权利。被怼:关键不在哪个部门,要勇于提出彻底结局问题的思路……
2)时序数据的问题预测没有提取到核心特征点,预测的维度特征点选取不合适,方法很不通用……
3)业务题目不能系统考虑,需要一步步引导才能堵上各种漏洞去填坑。先弄出问题了才去解决,没有预先考虑周全。
4)基础欠缺不重视,C++和操作系统部分的笔试得分率很低……
5)方法论很有问题,头痛医头,脚痛医脚……
本以为已经凉了,让我等hr过来,以为是带我走人,结果居然是通过了,进入hr面!!!很是吃惊!!!
hr面(30+min)
1)前面的面试官聊的咋样,对他的看法怎么看
2)对比抖音快手的看法。
3)实习经历介绍
4)offer情况
5)未来规划
6)自己的优势和长处
流程算是走完了,很感谢三面面试官这样的情况下都能让我通过!感激不尽!!!
希望能顺利等到OC,祈祷!!!
上周日下午面的,三轮技术面,一轮hr,hr面试就说这周五发offer,具体面经这两天发出来
------------更新分割线-----------------
首先说下本人双非本科生,能拿到offer离不开运气,因为看到很多其他人美团面经,感觉很难,可能是自己面试官人比较好,问的简单。
一面(顺序可能有适当修改):
1、一个数组,有正有负,把正的移到右边,负的移到左边。 快排partion
2、判断一个链表是否有环(我回答快慢指针,因此引出下一个问题)
3、假设一个节点为100的环形单链表,你这方法要走多少步判断出有环,99个节点呢?
4、tcp三次握手的过程?
5、进程与线程的区别?
6、说说你了解的http状态码,http请求方法?
7、简单说下银行家算法? (避免死锁的算法)
8、项目等相关。
9、实现一个生产者和消费者?
然后让我在房间等会,过了几分钟,二面面试官进来。
二面:
1、dubbo怎么实现异步的?(由于项目使用了)
2、dubbo底层怎么通信的?
3、进程和线程的区别?linux有进程和线程的区分吗?
4、中断和异常是什么?有什么区别?
5、tcp三次握手和四次挥手,两次握手会怎么样?
超时的连接不好确认
6、说说arp协议,nat协议,局域网是怎么通信的?
ARP协议是ip到mac地址映射
NAT(Network Address Translation)协议:在私有地址和全局地址之间转换的协议。
7、ip地址和mac地址区别?
8、虚拟内存和虚拟地址是什么?
9、死锁的必要条件?举一个死锁的例子,怎么避免死锁,怎么解决死锁?
10、hashmap、concurrenthashmap、hashtable?
11、项目,具体就不说了。
12、说下dns的过程?
2. 解析过程
主机向本地域名服务器解析的过程采用递归,而本地域名服务器向其它域名服务器解析可以使用递归和迭代两种方式。
迭代的方式下,本地域名服务器向一个域名服务器解析请求解析之后,结果返回到本地域名服务器,然后本地域名服务器继续向其它域名服务器请求解析;而递归地方式下,结果不是直接返回的,而是继续向前请求解析,最后的结果才会返回。
13、最小堆的定义?最小堆的插入与删除的全过程?
14、红黑树的定义?为什么是平衡树?怎么维护平衡?
15、B+树的定义?为什么要用b+树,而不用平衡二叉树?
16、聚集索引和非聚集索引的区别?
17、synchronized的原理?
18、synchronized和lock的区别?
19、如果美团给了你offer,你实习公司又转正了,你还来吗?
然后带我出去,说等会不在这间房间,然后路上问我实习的部门leader是谁,卧槽,他认识我leader。很是尴尬。等了几分钟,三面面试官带我去另一个地方面试。
三面(最难,问的很深入):
1、排序算法的稳定性是指什么?
2、说说常见排序算法的稳定性?选择排序为什么不稳定?归并为什么是稳定的?
快排不稳定
3、讲一下堆排序的全过程(这里面试官对每一个参数都会问清楚)?
原地建堆
4、你知道的设计模式(我回答单例,工厂,观察者,装饰者,因此引出更多问题)?
5、你会的单例(我回答懒汉,恶汉,静态内部类,枚举,双重检查)?
6、说说双重检查,volatile关键字的作用,因此也问了内存可见性和重排序?
7、说说原子类实现原理?(cas)?
8、说说cas需要哪些参数,操作系统对应的命令是什么?为什么能保证原子性?
9、volatile和cas有什么关联?什么时候可以互相替代?(一脸闷逼)
10、观察者模式有什么用?怎么实现的?
11、java类库那个是用装饰者模式(io)?
12、装饰着模式和代理模式有什么区别?(一脸懵逼)
13、给你一个64G的内存,你会怎么设置堆大小?
14、说说cms收集器的过程?
15、平时线上项目出现问题怎么排查?
16、hash冲突有哪些解决方法?简单说下再哈希法?怎么保证多个hash函数不会出现死循环?(很懵逼)
17、类加载机制?怎么破坏单例(这里应该想让我用类加载机制来破坏)?
面完了,又让我在当前房间等,过了几分钟,hr进来
四面(hr)
具体就不说了,反正聊得很嗨,我不是喜欢吹牛逼的人都被他带偏了。
C++:
1.c, 2.c, 3.c三个文件
1.c中定一个一个全局变量int a
能在2.c中引用过来吗 (可以,extern
如果这三个文件里各定义一个全局变量,那他们初始化的顺序是怎么样的 (猜是根据文件名…毕竟makefile一般都是指定一个文件夹下所有的file编译link。。。大哥笑了一下说你回去可以看看,凉凉
如果1.c里有一个全局变量 int a, 那能不能在void main()里再定义一个a。(我说可以。。。
如果可以,那要怎么访问全局变量a
extern
(我心想这大哥是不是debug遇到全局变量的bug了啊,怎么对这个这么执着
C++ 怎么实现多态 (virtual & CRTP
dynamic_cast怎么实现的 (不知道,但大胆预测是derived class 对象肯定是比base class大的,所以我觉得指针的starting addr是一样的,只是指针内还有一些具体offset的数据会根据derived class的实现调整。大哥说差不多是这样
Tcp 怎么实现拥塞控制
HTTP post和get有什么区别 (这个真不懂。。。只菜菜的做过一点web dev
了解什么树的数据结构,红黑树,AVL,二叉树,他们有哪些应用场景
熟悉linux指令吗,怎么定位死锁 ( top, ps查进程(瞎几把说的),紧接着说不过如果是我,我是会用gdb bt 几个怀疑的点然后backtrace一下
8.30 10:00 am
如果是被问到不会的凉,那我也认了
但全程没问我任何基础知识 + 代码
0. 居然问了一些HR要问的问题。。。
1. 介绍一下你的项目,你的project为啥这么设计 …¥#%@%…¥ @#
然后开始挑刺
2. 有看过socket相关的源码吗?Linux内核或者apache (没。。
3. 有用C++ python写过多线程多进程吗?
- 没,用go写过。
- 你不是说你最会C++ 和 python吗
- 这和我用go写这个不矛盾啊
- 那你为啥用go写
- 课程项目啊 = =
- 好吧,那你真的没用C++写过吗?
- 没。。。
- 我没什么问题了,你有什么想问的
- 加班严重吗
- 很严重,特别多。996是常态
- 。。。那我也没什么问题了
shopee 一
算法:字符串做+法, “234” + “678” = “912” // 字符串加法
OSI 前四层的作用
TCP的滑动窗口用来干啥的 保证数据可靠传输
TCP四次挥手
为什么要第四次挥手
time wait 和 close wait是干啥的
什么时候用tcpdump
Server能不能提前close,会有什么结果
滑动窗口size每次衰减/增大多少
HTTPS和HTTP的区别, HTTPS request的流程
浏览器访问域名的事件流程
DNS
ARP攻击是怎么回事
怎么样防止ARP攻击
知道虚拟IP吗(这个有点不确定。。就说好像是NAT内部的IP地址,与之对应的是公网的IP)
C++从代码到可执行文件是怎么生成的
预处理,编译,汇编,链接
动态链接和静态链接有啥区别
C++,python多态怎么实现的
为什么要GIL,用来解决什么问题的
有用过协程吗?和线程有什么区别
什么是内存泄漏
一个内存泄漏的进程退出还有有影响吗
怎么样会有僵尸进程
子进程结束后会像父进程发送一个信号,如果父进程没有来得及处理这个信号,就会出现僵尸进程
shopee 二
无手撕算法…..只需要讲概念和实现
如何大数组找top K
如何实现LRU
如何实现高可用
分布式存储主挂了怎么办
slave选举算法
如何预防脑裂
MySQL和mongodb的区别
为什么NoSQL快(没答出来)
C++编译阶段都干了啥
有啥问题 ->(为什么NoSQL快
1轮:
TCP 四次挥手,滑动窗口
虚函数的底层实现
Python GIL
一道简单的算法题,忘了。。。不过要优化很多次,优化了2次最后一次没想出来被面试官说了一顿
C++ int* arr = new int[10] delete[] arr为什么正好可以释放10个int而不是11个
还有几道有点忘了,个人感觉有几道题不看source code真答不上来,我答完都觉得已经挂了
2轮:
python里tornado的机理(我项目中有写到)
C++和python里的future是分别是干啥的
C++里面的右值知道吗(不知道) C++11
看你有做过分布式系统,你们系统的状态转移是怎么样的
如何防止脑裂
如何保证数据一致性
如何实现LRU cache
写一个归并排序
3轮:
看你做过爬虫,知道有哪些反爬虫的机制 = = (这个问题问的贼多,跟面试官探讨了很久,提了好几个方案都看他不是很满意)
现在实习公司的一些业务问题,C++11的特性
B+树有了解吗(没。。。)
数据库怎么建立索引(没建立过, 我们现在直接用一个叫solace的硬件做cache访问,贼快。。。 面试官尴尬了一下)
写一个二分查找的非递归实现
为什么想用C++不是Java (当然是因为帅啊!)
今天HR:
%¥@#^ ^%¥¥……%¥@……%¥……%¥&
: “周一意向书”
总结:运气好,基本0准备投的,只是想探一探各个公司的题库,没想到过了
有一个小tricky就是,不知道就直接说不知道,有些题对学生就是不友好,你没用过不知道很正常。你可以给他一个substitute方案说我没用过这个东西,这个场景我之前没见到过,不过如果我遇到的话是会这么想的balalalala
(当然基础题肯定要打上来+代码要过