Java 面试刷题

  1. 自我介绍
  2. 实验室项目的内容
  3. 使用的框架是什么?

SSM

  1. spring ioc和aop的含义
  2. TCP三次握手的流程
  3. 数据库事务有哪些特性

原子性,一致性,持久性,隔离性

  1. 你知道的垃圾回收算法

标记-清除算法(Mark-Sweep) 

复制算法(Copying)

标记-整理算法(Mark-compact)

分代收集算法

  1. 最喜欢哪种数据结构?


 

2、阿里蚂蚁实习

  1. 自我介绍
  2. 学校项目用了哪些技术栈
  3. spring boot和spring的区别
  4. ioc的流程
  5. aop的实现原理
  6. 说一说你看过的spring cloud源码???
  7. 四次挥手的流程
  8. 为什么需要4次挥手
  9. http协议的端口号               80 
  10. 讲一讲ssh协议的源码???
  11. Java中的线程创建

4 中方式创建

  1. 线程是怎么实现的

操作系统线程

  1. 线程最底层的数据结构是什么???
  2. java虚拟机运行的流程
  3. 堆区如何分类
  4. 垃圾回收有哪些算法

标记-清除算法(Mark-Sweep) 

复制算法(Copying)

标记-整理算法(Mark-compact)

分代收集算法

  1. java虚拟机的核心设计思想???


 

3、字节跳动实习

一面:

  1. 非关系型数据库和关系型数据库的区别?
  2. 事务的四大特性
  3. 数据库的隔离级别
  4. 乐观锁与悲观锁的区别
  5. 三次握手的流程
  6. 为什么需要3次
  7. http协议的流程
  8. http如何保存登录信息

通过cookies和seeion

  1. cookies和session的关系
  2. 进程和线程的关系

一个进程至少包含一个线程

  1. 进程之间通信的5种方式
  2. 数组和链表的区别
  3. hash表插入的流程
  4. 工厂模式的含义
  5. 算法题:寻找两个有序数组的中位数。

二面:

  1. 知识图谱如何寻找相距一个点距离为2的点
  2. https协议如何保证安全性          
  3. 非对称加密的原理
  4. https协议的原理
  5. 阻塞式io和非阻塞式io的区别
  6. select,poll,epoll的区别
  7. 如何加快数据库查询速度
  8. 聚集索引和非聚集索引的区别
  9. 什么时候不该使用索引?
  10. 索引底层的数据结构
  11. 解多少大数据的知识
  12. 算法题1:对单链表进行排序
  13. 算法题2:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。求跳到最后一个位置的最小次数。(跳跃游戏2)

 


 

4、携程实习

  1. 自我介绍
  2. 介绍项目所用的技术栈
  3. spring boot的入口是什么?
  4. spring boot的数据库中间件
  5. spring data jpa底层是什么
  6. hibernate和mybatis区别
  7. 写代码1:写出hibernate二级缓存源码(我选择死亡)
  8. 密码是直接存的吗?
  9. 直接存有什么问题?
  10. 存数据应该如何加密?

 

  1. Java线程池有哪些参数?
  2. 阻塞队列有几种?
  3. 拒绝策略有几种?
  4. 存1000个数需要多大的HashMap?        1000*4/3
  5. HashMap的负载因子。       0.75
  6. int型总共有多少个数字?                2^32
  7. 设计题:假如有10亿个数,只有一个重复,内存只能放下5亿个数,怎么找到这个重复的数字?
  8. 写代码2:寻找单链表的中点(一遍扫描)


 

5、京东实习

一面:

  1. 自我介绍
  2. 介绍项目
  3. java有几种基本类型,分别是什么?

Java 中有八种基本类型,分别是byte, short, int, long, char, float, double, boolean

  1. spring ioc的作用?
  2. spring aop异常处理
  3. 当一段代码被try catch后再发生异常时,aop的异常通知是否执行,为什么?
  4. 数据库事务的四大特性
  5. java中线程创建有几种方式

四种方法

  1. 讲一讲代理模式
  2. java的类加载流程
  3. redis有哪些数据结构
  4. 序列化的含义
  5. java序列化的框架有哪些?
  6. 设计题:如何设计一个秒杀系统(服务端、数据库、分布式)

二面:

  1. 介绍项目
  2. 画图1:画出spring MVC图
  3. 分别讲解M、V、C的各部分
  4. spring boot过滤器
  5. spring boot拦截器
  6. 画图2:画出spring boot处理一个http请求的全过程
  7. 四次挥手的流程
  8. 四次挥手中客户端何时关闭
  9. time-wait有多久
  10. redis内存满了怎么办
  11. redis内存淘汰算法除了lru还有哪些
  12. 网络协议有哪7层
  13. 用过哪些linux命令
  14. 算法题:中序遍历非递归

 


 

6、广联达实习

技术面:

  1. 自我介绍
  2. java的三大特性
  3. 封装、继承、多态的含义
  4. 接口和抽象类的区别
  5. ==和equals的区别
  6. jdk和jre的区别
  7. TCP和UDP的区别
  8. UDP在网络第几层
  9. 进程和线程的区别
  10. 数组和链表的区别
  11. 算法题1:判断二叉树B是否是二叉树A的子树
  12. 说出时间复杂度为O(N)的排序算法
  13. 解释该算法的流程
  14. 说出项目用的三种设计模式
  15. 分别是怎么用的
  16. 看过哪些技术书
  17. 都学会了哪些知识
  18. 谈谈你对jvm的理解

 


 

7、滴滴实习

  1. 自我介绍
  2. 项目的内容
  3. 主要实现了哪些功能
  4. 登录功能怎么做
  5. cookies和session的区别
  6. 注销怎么实现
  7. 怎么保证同样的账号同一时间只能在一处登录
  8. 注销了浏览器客户端页面会不会立刻断开
  9. 为什么游戏里断线页面就立刻会变化
  10. http协议到底能否保持连接         1.1长连接
  11. http协议服务端能不能主动给客户端发消息       不能
  12. http长连接的内容
  13. 文件上传如何实现
  14. 文件下载如何实现
  15. 如何保证报文的加密传输
  16. https的原理
  17. 如何在项目里使用https协议

 

 

freewheel的实习同样走过了hr面,到了录用审批,hr还加了我的微信,可惜最后依然没有过,因为hc只有一个,给了一个北邮的同学。

一面:

  1. 自我介绍
  2. 数据库有几种连接方式
  3. 对(a,b,c)加索引,查询ab、ac、bc有没有用?
  4. 算法题1:求x的n次方(最优解)
  5. 算法题2:整体反转字符串中的所有字母,如 abc(de&fg^h 反转为 hgf(ed&cd^a
  6. 算法题3:学生表(id,姓名) 科目表(id,科目名,分数)求每个学生最高分的科目和姓名

二面:

  1. 介绍项目
  2. 人员权限管理怎么具体实现
  3. 索引底层数据结构
  4. b加树与b树的区别
  5. linux查看ip

ifconfig

  1. linux查看内存使用情况

free -h

  1. 算法题:给定一个单链表 L:L0→L1→…→Ln-1→Ln ,
    将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…
    (需要实际的进行节点交换)
  2. 设计题:10亿篇文章,如何找出其中出现次数最多的100个词。
    备注:你有10台计算机,每台大概都只能存放总数据量的10分之一

 

 

9、深信服星耀计划(实习)

  1. 自我介绍
  2. 项目功能介绍
  3. 画出java运行时内存区结构图

  1. 画出堆区的结构图
  2. 各区采用什么gc方法
  3. CMS收集器的流程
  4. 垃圾收集怎么调优
  5. 类加载器为什么是组合而不是继承
  6. redis有哪些数据结构
  7. zset里边存什么
  8. 单链表查找复杂度O(n)
  9. 能不能更快
  10. 画出跳表的结构
  11. 描述跳表的构建流程
  12. 写出跳表查询的伪代码
  13. 写出跳表插入的伪代码
  14. 跳表的时间复杂度
  15. 写出跳表空间复杂度的推导公式
  16. hash加密如何加盐
  17. 如何设计好的hash函数

 

10、爱奇艺实习

一面:

1. 自我介绍
2. 介绍项目
3. hash加密用的是什么加密算法
4. 三次握手的过程
5. syn和ack号码的关系
6. http get和post的区别
7. java反射可以获得类的什么?
8. 乐观锁和悲观锁的区别
9. where和having的区别
10. redis持久化的方法

dis 的持久化有两种方式,或者说有两种策略:
1、RDB(Redis Database):指定的时间间隔能对你的数据进行快照存储;
2、AOF(Append Only File):每一个收到的写命令都通过 write 函数追加到文件中。
11. java volatile关键字
12. spring的入口什么?
13. List、set、Map的区别
14. linux查看进程

top和ps -aux

二面:

1. java运行时数据区


2. 程序计数器的作用

当前线程所执行的字节码的行号指示器
3. 虚拟机栈里放了什么

描述的是Java方法执行的内存模
型:每个方法在执行的同时都会创建一个帧栈(Stack Frame)用于存储局部变量表、操
作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行完成的过程,就对应着
一个栈帧在虚拟机栈中入栈到出栈的过程。它的线程也是私有的,生命周期与线程相同。
4. 类加载器的双亲委派

如果一个类加载器收到了类加载请求,它首先不会自己去尝试加载这个类,而是把这
个请求委派给父类加载器去完成。每一个层次的类加载器都是如此,因此所有的加载请求
最终都应该传送到顶层的启动类加载器中,只有当父类加载器反馈自己无法完成这个加载
请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去加载。

5. 为什么需要双亲委派

Java 类随着它的类加载器一起具备了一种带有优先级的层次关系。 例如:类
java.lang.Object,它存放在 rt.jar 中,无论哪一个类加载器需要加载这个类,最终都是委
派给处于模型最顶端的启动类加载器进行加载,因此 Object 类在程序的各种类加载器环境
中都是同一个类(使用的是同一个类加载器加载的)。相反,如果没有使用双亲委派模
型,由各个类加载器自行去加载的话,如果用户自己编写了一个 java.lang.Object 类,并
放在程序的 ClassPath 中,那么系统将会出现多个不同的 Object 类,Java 类型体系中最
基础的行为也就无法保证,应用程序也将变得一片混乱。
3.3 双
6. redis主从结构
7. redis哨兵的作用


8. 从浏览器中输入url之后发生了什么
9. ConcurrentHashMap的实现
10. java线程有多少种状态

六种状态


11. wait和sleep的区别
12. java线程通信同步有几种方式
13. java4种线程池分别是什么

 


14. CMS收集器和G1收集器的区别
15. spring bean的生命周期


16. 精通哪些消息队列???
17. 精通哪些大数据工具???
18. 精通哪些分布式框架???


 

11、中兴捧月面试大赛

现场技术面:

2个面试官轮流提问。
1、自我介绍
2、每个项目都做了什么
(那时候我还没去实习,写了好多项目,小的也写上了)
3、知识图谱如何实现。
4、面向对象的特性。

(封装、继承、多态)
5、接口和抽象类的区别。
6、事务的特性。
7、三次握手四次挥手。
8、进程和线程的区别。

9、说说你知道哪些数据结构?
10、项目中用了哪些设计模式?

11、都是怎么用的?
12、解释装饰器模式?(之前没说这个)
13、设计题:10亿个数快速寻找中位数

 

2、vivo提前批后端

技术面:软件工程师(后端方向)

1、自我介绍。
2、介绍项目。
3、介绍所用技术。
4、对string类的理解。接口和抽象类的区别。
5、静态变量存放在内存哪个区域?

方法区
6、有一个public static final的HashMap,里边对象的属性能不能修改?

可以
7、说出6种常见的java异常。

1.NullPointerException: 空指针异常

2.ClassCastException: 类型强制转换异常

3.ArrayIndexOutOfBoundsException: 数组下标越界异常

4.ArithmeticException:算术运算异常


8、多线程如何保持同步?
9、java可见性的关键字及其原理。 volitile
10、HashMap的实现原理、ConcurrentHashMap的结构、插入和查询的流程。
11、怎么查看java虚拟机内存占用?
12、JAVA内存如何分配?
13、堆区内存如何分配?

14、程序计数器的作用?
15、垃圾回收算法和流程。
16、如何减少full gc的次数?
17、方法区是否需要gc

不需要
18、类加载的流程。


19、知道哪些类加载器。

三种类加载器


20、类加载器之间的关系?


21、双亲委派模型。为什么使用双亲委派模型?

3.1 双亲委派模型的工作过程:
如果一个类加载器收到了类加载请求,它首先不会自己去尝试加载这个类,而是把这
个请求委派给父类加载器去完成。每一个层次的类加载器都是如此,因此所有的加载请求
最终都应该传送到顶层的启动类加载器中,只有当父类加载器反馈自己无法完成这个加载
请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去加载。
3.2 使用双亲委派模型的好处:
Java 类随着它的类加载器一起具备了一种带有优先级的层次关系。 例如:类
java.lang.Object,它存放在 rt.jar 中,无论哪一个类加载器需要加载这个类,最终都是委
派给处于模型最顶端的启动类加载器进行加载,因此 Object 类在程序的各种类加载器环境
中都是同一个类(使用的是同一个类加载器加载的)。相反,如果没有使用双亲委派模
型,由各个类加载器自行去加载的话,如果用户自己编写了一个 java.lang.Object 类,并
放在程序的 ClassPath 中,那么系统将会出现多个不同的 Object 类,Java 类型体系中最
基础的行为也就无法保证,应用程序也将变得一片混乱。
22、mysql有几种锁?怎么实现?


23、mysql mvcc?


24、你用的mysql存储引擎?为什么选择它?实现原理?


25、innodb事物的级别


26、b加树的结构?与二叉树的区别?与b树的区别?

N叉平衡树


27、redis数据结构?单线程还是多线程?


28、cpu密集型多线程和io密集型多线程的比较。
29、cpu密集型里如何管理多线程?
30、用什么样的线程池和阻塞队列?
31、cpu线程特别多会产生什么问题?
32、io密集型里怎么减少需要的线程数?
33、io多路复用的原理和实现。
34、这个还不够,怎么减少处理io(和磁盘io交互)所需要的线程?
35、用什么样的队列?你是怎么实现?
36、(我回答的redis的list实现的)这种队列有什么缺点?
37、既然有这样问题,为什么不用rabbitmq?(我说我偷懒了。。。)
38、io量很大,队列很长怎么办?
39、如何分布式存储?
40、你还有什么问题问我?


 

一面:技术面

问基础知识,不是特别简单,需要知道一些原理和实现。整体难度和vivo类似。
涉及到网络协议、mysql、多线程、类加载、gc、hashmap、红黑树、b加树、手写设计模式、spring启动原理等方面的各种知识。

二面:部长面

详细询问简历上的内容,包括科研,项目和实习。从你用的模型,框架,数据库,缓存等各方面仔细地问,包括原理还有实现,还会给项目出新的情景问题(需求)问你的解决方案。还有关于redis和mysql的各方面包括实际应用问了很多。

hr面:

从各个方面聊你的生活情况,人生规划等。我感觉展现真正的自己,实话实说就好。


 

14、百度提前批

一面

  1. 介绍学校项目以及提问
  2. 四次挥手的过程
  3. HashMap的实现原理
  4. Hash冲突
  5. Hashmap插入过程
  6. ArrayList和LinkedList的区别
  7. Java运行时数据区

  1. 大对象放在哪个内存区域
  2. GC的方法有哪些

主要的GC算法包括:标记清除方式、复制收集方式、引用计数方式。

  1. 栈中存放什么数据

用于存储局部变量表、操
作数栈、动态链接、方法出口等信息。

  1. 哪些对象可以作为GC Root
  2. 查看GC状态的命令
  3. Java怎么实现多线程?
  4. Java创建线程的方法?
  5. Futuretask和callable的区别?
  6. Callable和runnable的区别?
  7. 线程池分几种?拒绝策略有哪些?
  8. Synchronized和Reentrantlock的区别,分别怎么实现

前者是方法,后者是类

  1. CAS的含义
  2. Mysql知道几种存储引擎,有什么区别
  3. Innodb的行级锁的实现
  4. Innodb的行级锁有几种
  5. Innodb的隔离级别
  6. 事务的特性
  7. 数据库怎么优化
  8. 索引的数据结构
  9. 讲一讲b加树
  10. b加树有哪些优点
  11. Redis的数据结构
  12. Redis为什么快?
  13. Redis单线程还是多线程,为什么?
  14. Redis分布式锁
  15. spring boot和spring的区别
  16. 讲一讲对spring的认识(ioc、aop?)
  17. Spring aop实现原理
  18. Spring动态代理默认用哪一种
  19. 说说你熟悉的设计模式
  20. 说说适配器模式
  21. Rpc了解吗?
  22. Hadoop了解吗?
  23. 写代码:写出spring jdk动态代理的实现。

二面

  1. 介绍实习以及提问
  2. TCP/IP协议四层模型
  3. 线程池的参数和含义
  4. 线程池有几种
  5. newCachedthreadpool线程无限多会怎么样?
  6. 说一说对concurranthashmap的原理
  7. concurranthashmap和hashtable的区别。
  8. 了解TreeList吗?底层实现?
  9. 说一说你了解的红黑树。
  10. CAS的原理
  11. i加加是不是原子操作,为什么
  12. Mysql mvcc
  13. 版本号各有什么用?
  14. 带版本号时的插入删除过程是什么?
  15. Innodb默认隔离级别
  16. 脏读和幻读的区别是什么?
  17. GC的全流程
  18. GC中老年代用什么回收方法?
  19. 说一说策略模式。
  20. Linux如果cpu满了,用什么命令?
  21. 找到线程之后用什么命令?
  22. 算法题1:二叉树后序遍历非递归
  23. 算法题2:链表如何判断有环,链表有环求长度

 

15、顺丰sp专场

  1. 介绍实习做了什么?
  2. Java的基本类型
  3. String是基本类型吗?
  4. String、Stringbuffer和StringBuilder的区别
  5. 介绍项目做了什么?
  6. 线程的实现方式
  7. 线程有哪些方法?
  8. Wait()是线程的方法吗?

Wait 是Object方法的

  1. 项目中使用多线程的场景
  2. 是自己手写的吗?
  3. mysql分页
  4. Mybatis占位符
  5. 算法题:如何判断一个数是不是2的整数次幂?

16、shopee后端

一面:

  1. 介绍实习内容和你做了什么
  2. 进程和线程的区别
  3. 多线程如何同步
  4. 线程同步的实现方式(抛开语言,操作系统里)
  5. 讲一讲线程死锁
  6. 如何避免线程死锁
  7. 操作系统的线程/进程调度
  8. 说三种排序算法(快排、堆排、归并)
  9. 讲一下其中两种的原理(堆排、归并)
  10. 算法1:手撕快排
  11. 算法2:有环链表求环长度
  12. TCP和UDP的区别
  13. 说UDP的一个实际应用场景
  14. TCP的流量和拥塞控制
  15. 讲一讲ARP协议
  16. Mysql事务
  17. Mysql事务是怎么实现的
  18. Mysql的隔离级别
  19. 算法3:求二叉树两个节点的最近公共父节点

 

一面:

  1. 多态的含义
  2. 反射的作用
  3. 反射的实现
  4. 事务的ACID
  5. 事务的隔离界别
  6. 了解socket吗?
  7. Socket可能超时的情况
  8. Websocket和socket的区别?
  9. http如何保存状态
  10. Cookie和session的区别
  11. 多播和广播的区别
  12. 观察者模式
  13. 策略模式
  14. 设计模式的开/闭原则
  15. 算法题1:连续子数组最大和
  16. 算法题2:二叉树的右视图

 

作者:shangjiang
链接:https://www.nowcoder.com/discuss/285285?type=2
来源:牛客网
 

二面:

  1. 介绍实习
  2. 实习你做了哪些内容
  3. xml上传的实现方式
  4. 为何需要三步
  5. 重新设计整个项目上传功能
  6. 实习中用到了哪些设计模式
  7. 分别在什么功能里用
  8. 梳理类与类之间的关系
  9. 掌握哪些框架
  10. redis在项目里怎么用
  11. 具体怎么写,增删改查流程是什么
  12. 分布式准备拿什么框架做
  13. 对java虚拟机的理解
  14. java7和8的两个区别
  15. 为什么hashmap链表要转红黑树
  16. 为什么长度超过8转
  17. 为什么要把字符串常量池放到堆区
  18. java8方法区的变化

 


 

  1. 对远景了解多少
  2. 远景的物联网做什么
  3. 项目和实习的内容
  4. 项目的亮点
  5. 为什么用redis
  6. Mysql缓存和redis的区别
  7. 磁盘io的速度
  8. 查询的全流程
  9. 数据库表结构怎么设计
  10. 数据量有多少
  11. 为什么不选择读博而是工作

 

 

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值