本人双非一本非科班,之前在百度和字节实习过,这次其实没抱着什么特别大的希望投递,没想到字节可以再给我一次机会,还是挺开心的。
几场面试下来,面试得自信,声音自信,给面试官一种你啥都会稳如狗的感觉(实际内心慌得不行...),然后表达流畅,吐字清晰,不卑不亢,说话要有逻辑性,不能吞吞吐吐半天说不明白,得总结自己的面经,形成自己的知识体系,别人的面经写的再好也是别人的,自己刷面经总结自己不会的点整理出来才是最有用的,文末我分享了一些我学习的方法和我收集的资源,我都整理成一套资源库了希望能帮到大家
下面是面试经历全部写的是技术面试,hr面就没写了
整个面试过程,主要围绕算法和实习经历考察,基础知识的话不是很难。每一面的面试官都很nice,特别是三面的面试官,感觉在讨论的时候没有带着面试的压力,就是朋友之间的对话。
字节跳动一面(60分钟)
自我介绍说下TreeMap和LinkedHashMapTreeMap怎么按照自己想要的顺序排序ConcurrentHashMap怎么取的size值怎么防止恶意请求刷接口那ES怎么切词的呢,有写过切词插件吗你在项目中用Redis的场景说下Redis有哪些数据类型Redis怎么分片的Redis的删除策略字节跳动二面(60分钟)
你希望你处于一个什么样的工作环境怎么根据0-5随机函数得到0-8随机函数缓存和DB之间怎么保证数据一致性延时消息队列怎么设计Redis的zsetzset做延时队列会有什么问题死循环轮询耗时说下索引二八原理、提升读性能牺牲写性能的数据结构一个索引对应一颗B+树哈希、有序数组、二叉树查询的优缺点那为什么不用跳表呢?火车票区间查询怎么设计数据结构比如上海去武汉,途经南京、合肥现在要快速查询出两点之间票的库存手撕代码,leetcode54螺旋矩阵字节跳动 三面(60分钟)
手撕代码,模拟微信群随机红包,输入金额、人数,返回金额数组;注意最小单位分;聊项目,项目中的难点、模块然后还问了一些依赖模块的底层实现项目的数据量以及QPS能达到多少说下RPC,与HTTP的区别你来字节最想得到什么我说希望技术能突飞猛进,面试官说你别说的太虚,实实在在的说...你有什么想问我的吗
Paypal 一面(60分钟)
聊项目,说项目中的模块、技术难点聊下ES内部的一些机制ForkPoolJoin相对于线程池的优点,及底层实现详细说下CMS和G1收集器CMS怎么处理垃圾碎片的GC Root有哪些String的intern方法有什么用说下公平锁、非公平锁,为什么非公平锁性能更高CAS的三个问题及解决方案Paypal 二面(60分钟)
说下项目中的难点说下多线程中有哪些锁volatile关键字原理说下ES的底层实现大数据Spark、Hadoop、MapReduce有了解吗100万的数组怎么求最小的100个数字和最大的100个数字手撕代码,leetcode378有序矩阵中第K小的元素Paypal 三面(60分钟)
leetcode121买卖股票的最佳时机JVM调优详细说说偏向锁、轻量级锁、重量级锁问新生代配合CMS收集器用的什么收集器JVM里面会有几个栈为什么synchronized演变成重量级锁后性能会下降kafka有没有用过Redis怎么保证高可用主从机制,哨兵机制Paypal 四面(60分钟)
问我机器学习和大数据这块熟不熟悉答不会面试官说那我问你些java相关的问题Spring Boot内部怎么实现像tomcat那样直接把war包扔到某个目录然后运行起来整个项目Spring Boot很大的jar包里面比如说有个lib目录,那这个lib如果让你去加载,怎么加载你怎么深入的去学习JVM的你怎么去看的虚拟机的内存Jconsole和VisualVM会拿到内存占用的一个趋势,那你觉得什么样的趋势才是合理的Full GC和OOM时,我怎么知道是哪一段代码引起的内存溢出和泄漏G1收集器有没有Full GC线上服务GC日志有没有看过,G1 GC会有什么关键词
微信支付 一面(75分钟)
自我介绍哈希和红黑树的特点和应用场景说下time wait,出现在哪一端,什么原因会导致time wait过多,怎么解决TCP和UDP的区别用过什么微服务的框架项目中怎么实现负载均衡的NginxF5为什么一年不到就出来看机会为什么不用MySQL的分库分表,直接用ESES索引里面都存储了哪些字段调度平台模块是怎么调度的,什么时间调度,让你设计怎么实现微信支付 二面(60分钟)
ES的倒排索引了解分布式事务吗MySQL的事务隔离级别MySQL的主从备份机制数据库的表结构设计有哪些经验数据库的分库分表关键帧提取的原理限流怎么实现的DB和缓存怎么保证数据的一致性微信支付 三面(40分钟)
怎么保证缓存和DB之间的数据一致性缓存穿透、缓存击穿、缓存雪崩区别及解决方案怎么预估热点key,怎么解决热点key问题缓存的淘汰策略CPP会吗微信支付 四面(170分钟)
哈希存在的问题Redis有序集合底层实现为什么用跳表不用红黑树MySQL索引为什么用B+树不用红黑树zset有什么应用场景为什么用ES不用MySQL项目的数据规模为什么ES和MySQL都是基于磁盘,ES的查询性能要高面试官让我共享屏幕讲项目,边讲边问面试本质是一个自我优势展示的过程,不要把面试变成面试官问一句自己回答一句,主动抛出一些可能的点等面试官来问,比如我基本都被问到了DB和缓存之间怎么保证数据的一致性,其实都是我自己刻意往上引的,比如面试官说,你用过Redis吗,你可以说,用过,一般用来作为缓存配合MySQL提高性能,需要注意它们之间数据的一致性问题(不要太刻意,自己把握分寸),面试官大概率会接着问你是怎么保证的
以下最新总结的阿里P7资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等感兴趣的朋友,小编可以免费分享给你一起学习
知识点最全的java面试宝典(共227页)
刷leetcode,刷leetcode,刷leetcode!重要的事情说三遍,作为一个程序员,代码写的烂就是原罪,面试时前面答得再天花乱坠算法写的捉急也没用,只会让面试官产生你是背面经的感觉,所以写算法题还是要快准狠,快速无bug写出最优解在面试官那里是非常亮眼的,这个是没有捷径的,我自己这次面试leetcode高频300题刷了好几遍,面试算法很顺利,当然最主要的还是刷中等难度的题,hard题性价比太低,反正我没怎么刷...
Leetcode算法刷题宝典(共666页)Java数据结构和算法.(第二版)(共584页)
算法刷题LeetCode中文版(共264页)
算法刷题100天
不要眼高手低,不少小伙伴看面经觉得自己啥都会,但是自己会与面试过程中能清晰有层次的说出来是两回事,并且自己会到什么程度,有个说法很好,判断你是不是真的掌握一个知识的一个点在于你能不能通过通俗易懂的语言教会一个完全没有相关知识背景的人,如果这可以做到,那对知识的掌握一定是融会贯通的,面试过程中一定可以信手拈来。比如volatile关键字的原理,能不能说出点面试官眼前一亮的东西,和别的同学蜻蜓点水不一样的感觉,这还是不容易的
有需要小编整理的全套Java资源库的小伙伴,麻烦大家帮忙点赞+关注,加助理VX:mxx2020666,即可免费领取
