拼多多&快手研发面经node
本文首发于微信公众号:程序员江湖程序员
快手:Java研发工程师面试
面试共有三轮redis
技术面试两轮,一面40分钟,二面1个小时。算法
拼多多:业务平台研发工程师数组
在武汉进行的现场面试。共三面,耗时两个小时。缓存
祝你们早日拿到满意的offer。安全
1一面微信
拼多多:业务平台研发工程师数据结构
在武汉进行的现场面试。共三面,耗时两个小时。
一:先面了hr面
1 项目状况
2 实习收获
3 老家和指望城市
4 对拼多多有什么了解
5 对拼多多的11 10 6怎么看,能够接受么
二:技术面
1 讲一下项目
2 作的主要是Java对吧,讲一下多线程把,用到哪些写一下
3 写了thread和runnable,而后写了线程池,她问我线程池由哪些组件组成,有哪些线程池,分别怎么使用,以及拒绝策略有哪些。
4 何时多线程会发生死锁,写一个例子吧,而后我写了一个两个线程,两个锁,分别持有一个,请求另外一个的死锁实例。
5 集合类熟悉吧,写一个题目,一个字符串集合,找出pdd而且删除,我直接写了一个list而后for循环判断相等时删除,她说明显问题,我才发现list直接删位置会出错,因而我说改用数组,她说不太符合要求,因此应该使用iterator删除会好一点,修改会反映到集合类,而且不会出错。
6 而后说一下Redis吧,是单线程仍是多线程,Redis的分布式怎么作,说了集群。
7 RPC了解么,我说了主要是协议栈+数据格式+序列化方式,而后须要有服务注册中心管理生产者和消费者,他问我注册中心宕机怎么办,我说能够作高可用,他说要问的不是这个,是想问我注册中心宕机时消费者是否能访问生产者。
我说消费者本地有缓存,能够访问缓存中的生产者。
8 实习最大的收获是什么。
9 TCP三次握手的过程,若是没有第三次握手有什么问题。
三面:技术面
1 自我介绍
2 讲一下项目的主要架构,你在里面作了什么
3 有什么比较复杂的业务逻辑讲一下。
4 最大的难点是什么,收获是什么。
5 MySQL的主从复制怎么作的,答日志,具体原理是什么,有什么优缺点。
6 Redis了解哪些内容,是单线程么,为何是单线程呢,数据必定是存在物理内存中么,我不懂这话啥意思,就问了一下是否是指可能也在虚拟内存中。他说那讲一下虚拟内存的机制把,我就讲了分页,页表,换页这些东西。
7 项目用到了多线程,若是线程数不少会怎么样,我说会占内存,还有就是切换线程比较频繁,他问切换线程会发生什么,应该就是CPU切换上下文,具体就是寄存器和内存地址的刷新。
8 计算机如何访问一个文件的字节流呢,讲一下过程,说了Linux从inode节点找到磁盘地址,进行读取,他问我是直接读取么,我就说还会有读缓存,其实还应该说一下DMA的。
问了我知道swap分区么,我说不太清楚。
9 分布式了解哪些东西,消息队列了解么,用在什么场景,说了削峰,限流和异步。说了kafka,问我怎么保证数据不丢失,以及确保消息不会被重复消费。还问了消息送达确认是怎么作的。
10 cap了解么,分别指什么,base呢,强一致性和弱一致性有什么方法来作,2pc了解么,说一下大概过程。
11 负载均衡怎么作的呢,为何这么作,了解过集群雪崩么。
12 这样一个题目,一个节点要和客户链接创建心跳检测,大概有百万数量的链接,而且会按期发送心跳包,要写一个update方法和check方法,update方法更新心跳状态,check删除超时节点,怎么作,刚开始作了个hash发现check要轮询太慢了,而后用计时器和开线程检测也不行,最后说了个LRU,他说OK的。
13 写一道题,二叉树的后序遍历,非递归算法。
用一个栈能够实现,先压本身,再压右节点,再压左节点。不过我卡在一半没写完,面试官说有思路就好了,今天就面到这,而后就溜了,发现已经没人了。
用一个栈能够实现,先压本身,再压右节点,再压左节点。不过我卡在一半没写完,面试官说有思路就好了,今天就面到这,而后就溜了,发现已经没人了。
快手面经
一面:
1 写一个选择排序或者插入排序
2 写一个生产者消费者
3 Java多线程了解么,何时一个int
类型的操做是不安全的,自加呢,赋值呢。
若是使用volatile修饰的话有什么做用。
4 MySQL和redis的区别是什么
5 为何MySQL和Redis都要使用独立进程来部署,开放端口来提供服务,为何不写在内核中。
6 有一个场景,多线程并发,为每一个线程安排一个随机的睡眠时间,设想一种数据结构去唤醒睡眠时间结束的线程,应该用哪一种结构,答应该用优先级队列,也就是小顶堆,顶部是剩余睡眠时间最短的那个线程。
7 好像就是这些了。
二面:
1 项目
2 多线程
3 一道算法题,一个二维矩阵进行逆置操做,也就是行变列列变行。刚开始我理解错了,直接用一维数组转储再从新填入新数组。
面试官说能够不用一维数组么
而后解答的过程当中才发现我理解错了。改了一会才搞定。
4 扩展一下,二维数组存在500g的文件中,怎么作才能完成上面算法的操做,我就说先按行拆分,最后再拼接。
5 扩展两下,一行数据就会超出内存,应该怎么作,那就按列拆分,最后合并。
6 知道服务的横向扩展和纵向扩展么,刚开始理解错了,后来就说是提升单机性能,以及扩展成集群。
7 cap介绍一下吧,为何只能3选2
8 线程与进程
9 tcp和udp的区别
10 get和post的区别
11 并发量大概多少,作过优化吗
HR面:
老生常谈了,就不贴了。
▼更多精彩内容
腾讯研发面经
阿里中间件研发面经
百度研发面经
蚂蚁金服研发面经
更多校招干货请关注公众号:程序员江湖。
大侠,这里有干货!
本文来自 How_2_Play_Life 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/a724888...