Java后端、大数据开发岗位面试题目汇总
阿里
1. 开场自我介绍
2. 你最熟悉的一种排序算法,讲讲如何实现的,分析时间复杂度?
3. 数据结构熟不熟,讲解HashMap如何解决hash冲突的,是线程安全的吗?
4. 讲讲TCP三次握手,为什么要三次握手?(回答两次握手会出现丢包、延迟等情况时,面试官说三次也会有这种情况出现,小伙伴们可以再思考思考,越是这类常见的面试题,面试官可能问得会越深透)
5. TCP如何保证可靠性的?
6. 进程和线程之间的区别?
7. 列举下进程之间的通信方式有哪些?
8. 线程有哪几种状态?
9. 知道几种Java锁,什么是悲观锁和乐观锁?
10. JVM中如何判断对象是否存活?在回答可达性分析算法的时候,又问了哪些可以作为root对象?
11. 有几种GC算法,选择自己熟悉的一个详细讲讲
12. G1收集器是采用的哪种算法?
全程70分钟,问题设计的比较全面,基本围绕数据结构、计算机网络、操作系统和JVM这些计算机基础知识问的,但是面试官会由浅入深,很想知道你熟悉的知识区,对它的掌握有多深。
字节
一面:
1. 自我介绍
2. 分别介绍下Hadoop的几个组成框架?
3. HDFS如何进行写操作的?
4. 详细介绍下MapReduce的工作机制?重点回答了切片原理和Shuffle机制
5. MapReduce有哪些优化方法?
6. Redis熟不熟,介绍下它有几种数据类型?回答了8种,面试官说只有5种,后来在网上搜了搜,版本也很多。
7. 介绍下布隆过滤器的原理?
8. TCP三次握手和四次挥手,什么时候进入Time_Wait阶段的?
9. 手撕代码第一道是力扣原题:[169. 多数元素]
10. 手撕代码第二道如何实现最小栈(也是力扣原题[155. 最小栈]),可能时间有限,没有让手写,说一下思路。
11. 反问环节,有没有什么想问面试官的?(大家可以思考下这个问题,提问的好很有可能是个加分项)
二面:
1. 自我介绍之后,就全程几乎都是项目面,简历里有两个项目,被问到了很多细节上的。小伙伴们的简历上的项目一定要知根知底,辐射出的一些知识点也要掌握,比如我项目里有涉及到数据热点问题了,就会问到缓存雪崩、穿透之类的问题。
2. 反问环节
三面:
没有自我介绍,上来就手撕代码。
1. 用MapReduce手写一个wordcount
2. 谈一谈mapreduce如何实现topK的
3. 聊一聊在学习中遇到的困难,然后如何解决的?
4. 技术栈是怎么学习的?
5. 反问环节
拼多多
一面:
1. 自我介绍
2. Java中的Object类有哪些方法?介绍下final关键字
3. 重载和重写的区别是什么?
4. HashMap和CurrentHashMap的区别,以及用到的锁?
5. 给100万个数据,如何查找前10大个的数据?
6. JVM启动时需要启动哪些线程?
7. GC算法以及垃圾回收器有哪些,CMS的优缺点
8. 介绍下Java锁,并发关键字CountDownLatch、Semaphore
9. ZooKeeper原理、选举机制讲一下,在项目中怎么用到的?
10. 手撕代码:给了一组的数字,把指定的数字移动到前面,其他数字的顺序不变,和力扣中的[283. 移动零]类似。
11. 手撕代码:无序数组中找中位数。
二面:
1. 自我介绍,聊聊项目
2. mysql熟悉吗,介绍下索引,b+数,为什么不用avl树;
3. 讲讲mysql的隔离级别,mvc机制;
4. 分布式锁有了解吗?不熟,然后接下来又问了下Java锁
5. Synchronized锁和ReentrantLock锁的区别?
6. volatile作用和底层如何实现的?
7. 讲讲进程调度算法有哪些?
8. 什么是CAS,如何解决ABA问题的?
9. 手撕代码:手写归并排序,并分析时间复杂度和空间复杂度
三面:
1. 项目介绍,问了很多涉及到的技术栈
2. 如何实现负载均衡的?Nginx作用介绍下
3. 问到了毕设方向,以及如何学习技术栈的
腾讯
一面:
1. 自我介绍
2. 项目介绍,问了一致性哈希
3. Reids作用是干嘛的,持久化机制
4. http常见的几个状态码,http与https的区别介绍下
5. tcp如何实现可靠性的,拥塞控制、流量控制
6. 进程和线程的区别,线程的创建方式,有几个状态,wait和sleep方法?
7. 线程池的增长策略和拒绝策略
8. 愿不愿意转C ++,愿不愿意去深圳工作?不愿意
美团
一面:
1. 自我介绍
2. 项目介绍,数据是怎么来的,处理后如何进行存储?哪些是离线和实时处理的数据?
3. 看过相关技术栈的论文吗?
4. linux熟悉吗?介绍下常用的指令,查看内存,磁盘,进程,端口
5. HashMap的底层原理?1.7和1.8的区别有哪些,与ConcurrentHashMap的区别
6. 数据库的隔离性问题,脏读、不可重复度、幻读
7. 介绍下Redis中RDB和AOF的区别,如何重写AOF文件?
8. Hadoop集群需要启动哪些进程?
9. 介绍下HBase的存储结构
10. 反问
二面:
1. 自我介绍
2. 手写代码:给一个字符串,找出里面最长的回文串;
3. 手写代码: 给一张表,用sql语句查找工资最高的前10名员工的信息;
4. 介绍下进程间通信有哪些,最快的是哪个?
5. 信号量和互斥锁的区别?
6. 讲一下AQS框架的原理
7. JVM的类加载机制,为什么是双亲委派,不是的话有什么后果?
8. 线程池有哪些,以及有哪些核心参数?
9. Kafka如何保证数据安全的
10. 介绍一下零拷贝模式
11. HBase的rowkey设计需要注意什么?
三面:
1. 自我介绍
2. JVM中哪些对象进入老年代?
3. GC算法有哪些?自己用过哪些GC收集器?
4. HashMap的1.8中在扩容方面做了哪些优化?
5. Hbase的读写流程介绍下,以及和HDFS的读写流程的区别?
6. 怎么处理大量的小文件?如何优化,提高mr的shuffle效率
7. 介绍下spark RDD,说几个常见的算子,分别是哪种依赖?
8. 手撕代码:统计一个文本中单词出现的频率,输出前10个
9. 如果来美团工作,有什么规划?
10. 反问
百度
一面:
1. 自我介绍
2. 手撕代码:层序遍历二叉树,返回一个数组
3. ArrayList和LinkedList的区别,底层怎么实现的?
4. Java中的OOM问题,怎么避免
5. IO内存管理,IO模型
6. Java锁了解哪些,挑一个熟悉的介绍下
7. Synchronized的实现原理?与CAS的区别
8. 如何解决数据倾斜,从哪些方面可以解决?
9. 介绍下mysql中的索引引擎?怎么学习的mysql
二面:
1. 自我介绍
2. 手撕代码:给一个字符数组,输出出现频率最高的前K个字符;
3. 手撕代码: 力扣原题 [53. 最大子序和]
4. 输入一个网址,会发生哪些过程?
5. TCP和UDP的区别是什么,有哪些应用?
6. TCP的4次挥手,time_wait的作用是什么?
7. 介绍下IO模型,select,poll,epoll的区别?
8. Redis的持久化机制了解吗?介绍下两种方式的区别
总结
通过简单罗列汇总,可以看出来除了项目之外,对于校招生的同学考察的计算机基础比较多,主要包括计算机网络、操作系统、JVM、数据库以及分布式缓存等。而手撕代码,几乎都是来源于力扣原题,希望小伙伴们重视下力扣刷题,不必追求刷题的数量,像排序算法,LRU常见的题目多练习练习。
END