拿到字节抖音拼多多美团三个offer的牛人,分享自己的面经和心得体会!
Posted Java_宇宁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拿到字节抖音拼多多美团三个offer的牛人,分享自己的面经和心得体会!相关的知识,希望对你有一定的参考价值。
前言
曾无数次假设过毕业找工作的样子,却没想到这个求职季走地异常平淡,在一个星期内相继接到了字节、美团的橄榄枝,之后又在打酱油的霸面中拿下了拼多多。
几经考虑之后,选了一个在很多人眼里也许不是最好,但我自己却觉得最合适的工作。人不能贪心地想把所有的好处都占着,而最好的也未必是最适合的。
所谓选择也许只是综合了多方面因素,就重避轻后做出的一个现阶段的决定。它会影响一段时间,但却未必是一辈子,毕竟后面的路上我们还会不断地自我修正。
在面试之前也在网上看过一些面经,所以从感谢前辈和回馈后来者的角度出发,还是想写点干货,不过我觉得真正有用的还是那点心得体会。世界上没有绝对的真理,只是单纯记录这一阶段自己的一些想法,希望能有所帮助。
面经
字节抖音面经
字节一面:
- 疯狂问项目:你项目的大概结构、用了什么技术获得什么感受?
- redis用在什么业务场景上面
- 你如何主从同步的
- 什么数据放缓存什么数据放数据库
- 你业务中哪里用到了事务
- 业务中哪里用到了锁
- 业务中哪里用到了索引
- 你对mvc 的理解、你对spring springmvc springboot 的理解、spirngAOP在实战中的应用、一个url请求到响应的所有流程、 知道其他并发模型么
- 八皇后、用两个栈实现队列(以及高并发的设计)
- 如何保证数据一致性?
(面试官问的特别偏实战,完全不按正常的套路出牌就有些蒙)
字节二面(60分钟):
- 自我介绍
- tcp如何保证可靠传输?
- 仔细讲一讲拥塞控制,从慢启动开始,很细节,一直在追问
- 四次挥手的状态,time_wait过多要怎么解决?
- 泛洪攻击要怎么解决?
- http3.0有了解吗?
- Java中怎么保证并发安全的?
- 讲讲你怎么理解synchronized和volatile
- 都是什么场景下使用,为什么volatile不能保证原子性?
- 你刚刚提到了内存屏障,讲讲你怎么理解的?Java的内存模型有了解吗?
- 讲讲数据库中的锁机制
- 幻读可以通过什么机制保证
- 算法题:最长递增子序列,秒了
- 给m个房子涂n种颜色,相邻房子不同色,cost[i][j]表示给i号房子涂j颜色代价,求最小上色总成本。(LeetCode原题)
(主要是Java并发那里聊了很久)
字节三面(50分钟):
- synchronized,lock,AtomicInteger底层原理
- HashMap,ConcurrentHashMap底层结构原理
- 讲讲服务注册于发现(这部分主要讲了springcloud eureka 和部分 zookeeper,zookeeper的选举机制)
- Spring AOP 的实现方式,siglib 能否代理final修饰的类?
- JVM垃圾回收过程,并详细讲一种垃圾回收器
- 快重传和超时重传
- 为什么四次挥手后客户端等2MSL
- DNS解析全过程
- Innodb,B+树,聚簇索引和非聚簇索引区别
- 一千万条数据,问 b+树大概多高?
- RPC框架了解吗
- 如何设计基于udp的可靠传输?
- tcp如何保证数据安全性的?磁盘如何保证数据不丢的?
- 手写sql,实现一个按时间降序的分页查询
字节四面:
- 你认为遇到过最大的挫折是什么?怎么解决的?
- 职业规划
- 对字节跳动的认识
- 你认为字节是一家年轻的公司吗?年轻是核心竞争力吗?
- 你有没有崇拜的人
- 不考虑公司地理因素,最想要去哪个城市工作?
- 平时的兴趣爱好?
- 喜欢写博客吗?看什么书?
(HR和Leader都问了一些开发性问题)
字节跳动面试总结(一些心得和小建议)
- 字节跳动对算法真的非常重要,提前刷题真的很有必要,不然基本上没戏,运气好的说不定还能被问到原题,当然你是算法大神,就不需要浪费时间在这上面了。
- 基本上每轮都有算法题,1~3道左右,难度不一,一般根据当次面试情况来的,会考虑的面试者的表现,但也不会太为难你。
- 拿到算法题时,不要立即作答,可以先和面试官聊一下自己的思路。
拼多多面经
拼多多一面(大约1h左右):
- 讲一讲 final / finally的区别
- try-catch-finally在不同情况下的执行顺序?
- finally里return和外部的return谁覆盖谁?
- wait / notify / notifyAll说一说?
- notify唤醒线程之后可以立刻执行吗?
- sleep / wait的区别?
- Java 的线程有哪些状态?
- Java 堆的分布?
- 为什么要分出两块 survivor?
- Mark-Copy 的流程?
- 什么情况下会触发 Full GC?
- Full GC 和 Minor GC 的耗时比例?
- 老年代和新生代的空间大小比例?
- HTTP 状态码列举一些?
- connect 失败会报什么异常?
- IO 分类?NIO 是阻塞的还是非阻塞的?
- 聚集索引、联合索引、覆盖索引解释一下?
- 口头设计一个表和索引,然后说一说哪种查询会走联合索引,哪种会走覆盖索引?
- 聊项目,以及项目的困难点?
- 手撕算法环节:有序数组 / 链表转平衡二叉树
拼多多二面(大约50分钟左右):
- 自我介绍
- 聊聊项目
- TCP 的流量控制和拥塞控制说一说 查问:接收窗口的空间是怎么分配的?是不是多个 TCP 连接共用一块内存还是各自有独立的?
- TCP 和 UDP 的区别
- 网络的五层模型,每一层有什么协议?
- PING 命令用的是什么协议(是 ICMP,我没答上来)
- OS 的内存管理、进程管理说一说
- 物理内存空间、虚拟内存空间?
- 虚拟内存的作用?
- 内存的连续空间不够分配的时候怎么处理?全局内存的空闲空间不够分配的时候怎么办?
- 快排和归并的复杂度,快排的退化
- 平衡二叉树各种操作的时间复杂度
- AVL 树和红黑树的区别?
- 红黑树的应用?JavaTreeMapAPI 为什么不用 AVL 树?
- B 树和 B+ 树的应用?有什么区别?为什么 mysql 用 B+树?
- Redis 和 memcache 的区别?Redis 何以高性能?
- 异步非阻塞 IO 了解吗?(扯了点事件分发器的 Proactor 模型,面试官认可了)
- 手撕算法:二分查找变形题,浮点数的等差数列,一开始公差是1.0,在某一个位置公差变为0.1,找到该位置
- 手头上有哪些 offer ?
拼多多三面(HR面大约30分钟):
- 对拼多多有什么了解?给拼多多做一个画像?
- 家是哪儿人?对于未来的就业城市有什么想法?
- 有女朋友吗?
- 目前面了哪些公司?对于目前投的公司有什么偏好吗?
- 有想象过在拼多多工作的一天吗?对薪资有什么要求?
- 从哪些渠道了解互联网相关的讯息?
- 如果拼多多把你挂了,你觉得会是什么原因?我和你聊了二十分钟,你觉得你的哪些非技术性的综合素质可能不如其他候选者?
- 薪资
- 你有什么想问的吗?
美团面经
美团一面:
- redis集群,为什么是16384?哨兵模式,选举过程,会有脑裂问题么?raft算法,优缺点
- JVM类加载器,自定义类加载器,双亲委派机制,优缺点,tomcat类加载机制
- Tomcat热部署,热加载了解吗?怎么做到的?
- cms收集器过程,g1收集器原理,怎么实现可预测停顿的?region的大小,结构
- 内存溢出,内存泄漏遇到过吗?什么场景产生的?怎么解决的?
- 锁升级过程,轻量锁可以变成偏向锁么?偏向锁可以变成无锁么?自旋锁,对象头结构,锁状态变化过程
- kafka重平衡,重启服务怎么保证kafka不发生重平衡?有什么方案?
- 怎么理解分布式和微服务?为什么要拆分服务?会产生什么问题?怎么解决这些问题?
- 你们用的什么消息中间件?kafka,为什么用kafka?高吞吐量,怎么保证高吞吐量的?设计模型,零拷贝
- 算法1:给定一个长度为N的整形数组arr,其中有N个互不相等的自然数1-N,请实现arr的排序,但是不要把下标0∼N−1位置上的数通过直接赋值的方式替换成1∼N
- 算法2:判断一个树是否是平衡二叉树
美团二面:
- Innodb的结构了解么?磁盘页和缓存区是怎么配合,以及查找的?缓冲区和磁盘数据不一致怎么办?mysql突然宕机了会出现数据丢失么?
- redis字符串实现,sds和c区别,空间预分配
- redis有序集合怎么实现的?跳表是什么?往跳表添加一个元素的过程,添加和获取元素,获取分数的时间复杂度,为什么不用红黑树?红黑树有什么特点?左旋右旋操作
- io模型了解么?多路复用,selete,poll,epoll,epoll的结构,怎么注册事件,et和lt模式
- 怎么理解高可用?如何保证高可用?有什么弊端,熔断机制,怎么实现?
- 对于高并发怎么看,怎么算高并发,你们项目有吗?如果有会产生什么问题,怎么解决
- 项目介绍
- 算法:给定一个二叉树,请计算节点值之和最大的路径的节点值之和是多少,这个路径的开始节点和结束节点可以是二叉树中的任意节点
美团三面:
- 项目介绍
- 线上有遇到大流量的情况么,产生了什么问题,为什么数据库2000qps就撑不住了,有想过原因么,你们当时怎么处理的?
- 限流怎么做,如果让你设计一个限流系统,怎么实现?
- 算法:求一个float数的立方根,牛顿迭代法
- 什么时候能入职,你对岗位的期望是什么?
- 你还在面试其他公司么,目前是一个什么流程?
如何复习
Java笼统一点来讲,无非是:JUC、多线程、锁、集合、基础知识、框架、分布式。
一个知识体系一定要一块学,
比如 JUC,这个是一个很大的包,系统学习会比较消耗时间,但是收益也是比较不错的,能够吧一些细节的点都串联起来,这样记忆比较更深刻一些
比如 HashMap 可以揉碎了学习,为什么0.75的负载因子,为什么要无符号右移16位?为什么是2的倍数?为什么是8而不是7、9?
工具类的东西很容易被替代,曾今的 SSH 现在的 Spring-Boot、Cloud,也许过几年之后又是新花样,但技术底层是差不多的原理,了解了底层,不仅有助于问题的排查,对于程序猿的整个晋升的道路而言,更是不错的一种思维、学习方式。
忌讳东一榔头,西一棒槌的学习,那样知识为了应付面试,面试过了,很容易就会忘。
一般这样的一个顺序:
- 看源码,抠细节
- 看博客、公众号的相应解释
- 自己总结一遍,写到自己的MD文件或者博客里
- 一周之后,或者几天之后在复习一遍,(艾宾浩斯遗忘曲线)温故而知新
刷题
刷题两个好地方:
- 牛客,也是我推荐大家去的,所有题目免费,而且基本上都有大佬们讨论
- LeetCode,这个也可以,但是相应地会收取一定的费用,VIP之类的
字节跳动对于算法十分钟爱,几乎每一面都会至少两到算法题,所以,要想进字节,至少俩月算法题刷起来。
不要扯什么算法不重要,程序猿搞不定算法就像厨子不会颠勺,司机不会挂挡。
Java面试复盘笔记
《Java核心知识点合集(283页)》
内容涵盖:Java基础、JVM、高并发、多线程、分布式、设计模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat、数据库、云计算等
《Java中高级核心知识点合集(524页)》
这些内容均分享给出去,需要完整版的朋友,点击这里获取,备注“CSDN”一键三连提高通过率
《Java高级架构知识点整理》
《架构设计》
《Java高并发核心编程》734页
《数据结构和算法》
《1000道 互联网Java工程师面试题 (485页)》
Java 学习资料,包含了 Java 工程师必学的四大开源框架–MyBatis、Spring、Spring MVC、Spring Boot,视频资料、大厂面试题等,想要的朋友末尾可以扫码免费领取。👇👇👇
想要的朋友点击这里免费领取!【BAT一线大厂面试题】
经验总结
这是我在工作、面试中学习并总结到的一些知识点, 都是一些比较典型的、常被问到的问题。如果你平时没有注意去总结的话,那么当你面试被问到的时候可能会是一脸懵圈,就算这个问题你知道怎么回事,但是你平时没有认真总结,你也可能会出现逻辑混乱的情况,从而错失工作机会。
有些知识点不经常使用就会忘记,但是面试还会问,对此,我也是深受其害,所以我决定将这些遇见的问题整理下来,分享出去,帮助更多的人,我们共同进步。所谓“温故而知新”,没事的时候多翻看一下这些知识,没准就会有新的收获。你没时间整理的东西,我都帮你写好了。
以上这些内容均免费分享给大家,需要完整版的朋友,点击这里获取,备注“CSDN”一键三连提高通过率
以上是关于拿到字节抖音拼多多美团三个offer的牛人,分享自己的面经和心得体会!的主要内容,如果未能解决你的问题,请参考以下文章
两年半开发经验,从360离职后,拿到钉钉抖音小红书美团等8家公司的offer
凭借这份python面试宝典,我成功拿到了字节跳动腾讯阿里巴巴美团小米等六家大厂offer