vlambda博客
学习文章列表

Java后端、大数据开发岗位面试题目汇总


大家好,我是大D。

今天给大家分享几位应届生写的秋招时面试各大厂的经历,用心地总结了面试过程中被问到的细节以及思考,希望能给正在备战大厂的小伙伴们带来一些参考,有的放矢地准备面试。

阿里



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