前言
网上找了很多的Java面试题及部分资料,选取了其中10篇来作为本次的分享。以下为整理出来的文章,给大家分享。
java面试题及答案 第一篇
一面
手写ArrayList
手写进制转换算法,求出一个数的二进制数 1 的个数
JAVA 基础,equals 和==
多线程方式、threadlocal,各种锁,synchronized 和 lock
设计模式、spring 类加载方式、实例保存在哪、aop ioc、反射机制6、类加载器,双亲委派模型,热部署
jvm 内存模型,内存结构、堆的分代算法、堆的分区、gc 算法、gc 过程
tcp ip,七层模型,rest 接口规范,get 和 post 区别,长度,安全9、tcp ip 的 arp 协议,两个同一网络的主机如何获得对方的 mac 地址10、负载均衡、高并发、高可用的架构
mysql 的引擎区别
redis 缓存,redis 的集群部署,热备份,主从备份,主从数据库,hash 映射找到知道指定节点
了解云计算么,了解云容器 docker 么,容器和虚拟机的区别
百度 java 程序员
二面
自我介绍,项目中负责哪些,做了哪些
项目中的数据库备份,主从数据库、集群
数据库的索引原理,b+树原理,trie 树引申,二叉查找树的原理
海量数据中查找一个单词,分布式计算 map reduce,或者用 hsah 映射筛选部分结果5、java 的抽象类和接口区别、java 的 hashmap,java 的内存模型,分区,分代垃圾回收算法。实例、常量放在哪里
int 4 个字节,double 8 个字节
多线程中的wait 和sleep 区别,notify 的作用
设计模式了解哪些,写一个观察者模式。实现两个接口,一个是主题一个是观察者,并写出对应方法
写一个生产者消费者队列的方法,分别写两个类代表生产者和消费者,并且用队列模拟其生产消费
tcp ip 的四次挥手,子网掩码的作用
了解 linux 么,说一下 linux 的内核锁?
有没有用过 sed,使用 shell 脚本写一个将文本中的字符替换掉的脚本,大概说了一下用 grep||替换
java面试题及答案 第二篇
一面
自我介绍
Java 中的多态
为什么要同时重写 hashcode 和 equals 4、Hashmap 的原理
Hashmap 如何变线程安全,每种方式的优缺点
垃圾回收机制
Jvm 的参数你知道的说一下
设计模式了解的说一下啊
手撕一个单例模式
算法题目
手撕算法:反转单链表
手撕算法:实现类似微博子结构的数据结构,输入一系列父子关系,输出一个类似微博评论的父子结构图
手写 java 多线程
手写 java 的soeket 编程,服务端和客户端
手撕算法:爬楼梯,写出状态转移方程
智力题:时针分针什么时候重合
二面
自我介绍
项目介绍
服务器如何负载均衡,有哪些算法,哪个比较好,一致性哈希原理,怎么避免 DDOS 攻击请求打到少数机器
TCP 连接中的三次握手和四次挥手,四次挥手的最后一个ack 的作用是什么,为什么要
time wait,为什么是 2msl
数据库的备份和恢复怎么实现的,主从复制怎么做的,什么时候会出现数据不一致,如何解决
Linux 查看 cpu 占用率高的进程
手撕算法:给定一个数字三角形,找到从顶部到底部的最小路径和。每一步可以移动到下面一行的相邻数字上
然后继续在这个问题上扩展
求出最短那条的路径
递归求出所有的路径
设计模式讲一下熟悉的
会不会滥用设计模式
多线程条件变量为什么要在while 体里
java面试题及答案 第三篇
一面
自我介绍
问我数据结构算法好不好
找到单链表的三等分点,如果单链表是有环的呢
讲一下项目的架构
说一下你熟悉的设计模
有没有配置过服务器
二面
Spring:有没有用过 Spring,Spring IOC、AOP 机制与实现,Spring MVC
多线程:怎么实现线程安全,各个实现方法有什么区别,volatile 关键字的使用,可重入锁的理解,Synchronized 是不是可重入锁
集合:HashMap 底层实现,怎么实现HashMap 线程安全
JVM 内存管理,GC 算法,HotSpot 里面的垃圾回收器、类加载
进程和线程的区别
HTTP 有没有状态
Java IO,NIO,Java 中有没有实现异步 IO
前端会不会,Ajax 是什么,Ajax 实现原理
让我设计一个线程池
讲几个设计模式,哪些地方用到了,为什么要用
Mysql 优化、索引的实现是从数据库设计优化和查询优化两方面讲的。索引 B+树实现, InnoDB 和 MyISAM 主键索引的实现区别,一个聚集一个非聚集
事务的隔离级别
四种隔离级别,可能会出现哪些异常,mysql 中默认级别
有没有用过 Hibernate、mybatis、git
从 10 万个数中找最小的 10 个,时间复杂度分析
从一个有正有负数组中找连续子数组的最大和,时间复杂度分析
满二叉树第 i 层有多少个节点,n 层的满二叉树共有多少个节点
java面试题及答案 第四篇
一面
自我介绍
确定了下我学过的东西:Java,linux,mysql 网络,数据结构和算法
说一下实习公司的测试流程
先问一下java 相关的,说下 java 的作用域
重载和重写的区别?
知道 error 和 exception 吗?异常处理机制
char 类型能否存储一个中文字符?
接口可以继承接口吗?抽象类可以实现接口吗?
知道序列化吗?反序列化?
序列化如何实现?
Java 垃圾回收是怎么个情况?
如何让jvm 开始垃圾收集?
调用了finalize()System、gc()会立刻开始垃圾回收吗? 14、final,finall,finalize 三者的区别?
问下网络相关的,说下三次握手和四次挥手的详细过程?
http 的状态码,像 1、1、1、0,1、0,1、0 都是什么意思?1、0?
算法,写下冒泡排序或者快速排序?
冒泡排序两个循环,可以优化吗?时间复杂度是多少?空间复杂度呢?
写下二分查找
mysql,student_score 表,有字段:s_id,course,score、写 sql,查出平均成绩大于1、的学生 id
linux,查看 cpu 使用率的命令?
查看磁盘使用情况的命令?
按照文件名查找一个文件的命令?
查到某文件并删除如何进行?
已知一个进程号,杀掉这个进程的命令?
如何友好地停掉一个进程? 27、vim、vi 用的多吗?
日志文件是滚动的,要查找日志文件的末 1、行如何查?
项目,讲下你简历上写的项目的架构,从数据库->dao->service->controller 30、项目中有没有管理一些配置文件?比如、pom
如何使用配置文件呢?(让配置文件生效 xmlPathContextApplication(“application、xml”))
二面
无自我介绍,直接介绍实习工作
如何保证测试的质量?
除了用时间成本,有没有什么有效确保测试质量的措施?
遇到难以解决的问题,怎么应对
在工作中有没有和别人的合作?实习期间有没有遇到矛盾?
觉得工作中什么事情很难抗?
你怎么看待开发和测试的关系?
对未来职业有什么预期吗?
java 里面会有内存泄漏吗?什么情况下会有?
String Stringbuffer StringBuilder 对比11、stringbuffer 和stringbuilder 适用场景? 12、多态理解?
算法:求一个字符串内的最大不重复子串
算法:无序数组,找出其中和为 target 的元素
逻辑:1、1、求 1
你的外卖系统,如何来规划测试?
java面试题及答案 第五篇
一面
项目负责模块的流程,具体怎么做
git 和 maven 的常用命令(有关于分支、文件对比等相关操作;打包等命令)
sql 语句——内联查询,如何在一条 sql 语句执行前输出一个随机数
使用redis 的好处
如何找到一个链表的中间节点?
如何判断一个三角形的类型?
如果要对对购物车模块进行测试,阐述一下自己的想法
面向对象有三大特征:封装性、继承性、多态性
java 中有哪些常见的数据类型?
常用哪些工具类?
hashmap 的底层实现,以及它的优缺点?
linux 命令:查询指定文件的行数
二面
自我介绍。有提到服务的模块化改造
对于MVC,SOA,微服务的理解
看到我项目里面用了redis,为什么要用 redis?是否理解 redis 的线程模型?
然后他紧接着问我,你确定redis 比 Mysql 快?
redis 的项目中的实际应用场景?
我们项目中的那些业务必须要用 redis,既然说 redis 可以给 mysql 减压,那你们系统的用户量和并发量是多少?
有没有遇到过 Mysql 顶不住宕机的情况?如果现在系统的流量增加 1、00 倍,该从那些层面考虑优化系统性能?
在使用redis 的时候你应该注意那些问题
看你简历上写你深入理解 OOP,说一下你对 OOP 的理解
你说你有良好的编程习惯,具体体现在哪里
怎么用的设计模式去重构的流程模块。讲一下思路
最近看过那些书?学JAVA 多久了?什么时候能来实习,能来多久?
看你熟悉 mysql,简单说一下 MVCC
说一下你在线上使用mysql 遇到的具体问题
说一下Mysql 线上调优的经验
说一下 mysql 中共有那些锁,并分别介绍一下
java面试题及答案 第六篇
一面
实习、项目,问得比较深
Java 基本数据类型,int 和 Integer 区别
ArrayList 和 LinkedList 区别
Stack 和 Heap 区别,空间存放上?内存分配上?
代码题:1-7 可以组成的不同且不重复的三位数
Redis 存取数据
二面
实习和项目经历(较详细),遇到了什么问题,怎么解决的
用了什么数据库,读写数据量大不大,用了什么引擎?MyISAM 引擎用过没有?有什么区别?MyISAM 具体用的用途是什么
数据库相关隔离级别介绍下,你现在用的是什么隔离级别
两个事务A、B,A 是未提交,A 读了一个数据,B 对数据进行写,A 再次读读的是什么数据?
我专业不是计算机专业的,问了下和计算机专业的关系,都学了些什么相关的理论
排序相关算法,时间复杂度都是怎么样的
对于单链表来说,比较好的排序是什么?
队列和栈。两个栈怎么实现队列?
一群数字如何去重
给栈加个辅助功能,实现得到栈此时的最小元素
Java 并发,内存管理,并发?什么场景遇到过?怎么解决?
OOM 什么时候遇到过?OOM 时程序有什么表现?进程消掉了还是线程死掉了?
java面试题及答案 第七篇
一面
在线程 A 对 HashMap 进行迭代查询的时候,线程 B 对 HashMap 进行增删改会发生什么
ConcurrentHashMap,的数据结构与 HashMap,有什么区别与联系3、Java 内存模型中哪一个区域不会发生 OOM 异常
类加载流程
为什么要有双亲委派,类加载器有哪些
MVCC 是什么,简述 MySQL 的隔离机制
MySQL 的锁机制
Java API 中NIO 和 BIO 的区别
消息中间件的好处,如何选型
Redis 的 IO 模型;常用的数据结构;zset 的内部实现,为什么用跳表不用红黑树,跳表的空间复杂度
11、AOP 的抽象属性之间的关系与联系
二面
介绍项目,秒杀平台如果想支持更大的并发量应该如何优化?如果把项目部署成多个服务,架构方面应该怎么做
数据库的ACID,MySQL 底层是如何保证原子性的
设计一个实时监测 MySQL 的工具,可以检测每条 SQL 语句运行时间、事务的运行和数据库的连接信息等
MySQL 的 binlog、redo log 和 undo log 5、HTTP 和 HTTPS 的区别
Redis 的主从架构、哨兵机制
Redis 的持久化,RDB 和 AOF 的对比
MQ 如何保证消息传输的可靠性
问了学校的研究方向、本科学习情况及获奖情况
java面试题及答案 第八篇
一面
数据库的事务,四个性质说一下,分别有什么用,怎么实现的
讲到了redo 和 undo 日志,问我分别有什么用,说redo 日志说错了
数据库的隔离性如何保证,使用悲观锁和乐观锁有何区别。MVCC 的设计目的是什么, 怎么使用版本号判断数据的可见性
问了一道算法,1 到N 的所有数字,按照字典序打印,怎么做,怎么优化,按照数字特征顺序打印,问这个东西和什么结构比较像。提示是树,然后说了个多叉树,问我怎么实现, 最后其实使用dfs 遍历树的每个分支
多线程并发的同步实现,有两个方法,每个方法里有a 部分代码和b 部分代码,我要让两个线程分别执行两个方法,并且让他们运行完a 部分代码再一起向下执行,如何实现
我说了用 cyclicbarrier 实现,互相等待await
然后他问我怎么用信号量实现,并且提示可以再用一个线程
问了项目
如何把优化递归的代码
二面
自我介绍,项目
服务器如何负载均衡,有哪些算法,哪个比较好,一致性哈希原理,怎么避免 DDOS 攻击请求打到少数机器
TCP 连接中的三次握手和四次挥手,四次挥手的最后一个ack 的作用是什么,为什么要
time wait,为什么是 2msl
数据库的备份和恢复怎么实现的,主从复制怎么做的,什么时候会出现数据不一致,如何解决
开源的技术看过用过么,分布式存储的了解么
想做什么方向的开发
Linux 查看 cpu 占用率高的进程
查看占用某端口的进程和某进程监听的端口
如何查询日志文件中的所有 ip,正则表达式
java面试题及答案 第九篇
一面
问极光推送 JPush 怎么做的,有什么优缺点,要怎么改
apk 如何瘦身,如何写脚本去掉多余的资源,内存如何优化,性能如何提升
protobuffer,和 json 什么区别,分别适用于什么场景,自己设计一套通讯协议,如果尽量压缩每个key
UI View 渲染流程
activit 几种启动模式
view 的attach deatch 是谁触发
手写一个快排算法
tcp 三次握手,sack 是什么
redis 如何存储用户信息,问我热数据是以什么格式存的,问我用过几种类型数据,什么场景用的
服务器如何实现秒传文件
二面
问我过度绘制怎么解决,问我如何发现内存泄漏
然后就说项目很牛,开始问我基础的4、问我final 有哪些用法
static 哪些用法
volatile 什么用法
java 一共就 2 种,值类型和非值类型的理解
锁有几种
synchronized 如果加到一个方法,另一个线程想访问类中的其他方法行不行,如果两个方法都加sync 关键字,又是怎样的访问权限
public 和默认的什么关键字都不加有什么区别
问我对进线 golang 的协程的理解
android service 和广播的理解
如果我们的应用关闭了,或者根本没打开过,还怎么收到推送
java面试题及答案 十篇
一面
自我介绍
Java 中的八大类型及其包装类型
说一下 Map 的各种实现类,它们有什么区别
HashMap 底层实现
Spring 中的 Bean 生命周期,Spring 初始化过程
数据库中的组合索引,数据库优化有了解过吗
快排,时间空间复杂度
Servlet 是单线程还是多线程的,线程安全吗
有什么要问我的
java面试题及答案2020
二面
实习经历,实习时的项目功职责
项目介绍,redis 和 mysql 是如何保证数据同步性的3、rabbitmq 是如何保证可靠的,kafka 适用于什么场景
springboot 的优介绍一下springboot
orm 有了解过 Springdata 吗,如何把 mybatis 里的xml 迁移到springboot 6、redis 的作实用场景
说一下微服务,docker 的优点,docker 中的端口映射问题
静态内部类和非静态内部类,内部类为什么可以访问到它外部类的数据和方法? 9、lambda 表达式在 jvm 里是如何体现的
hash 冲突了解哪些?说一下 hashmap 里的 hash 冲突,红黑树的定义,put 一个元素到红黑树里红黑树的转变过程
java面试题及答案2020
正向反向*,nginx 有了解过吗
android 里的 handler 了解吗
zookeepespringcloud 知道吗,你的项目有没有使用多台机器
大厂面试的问题会有各个方面的问题,有的是基础知识,也有的是一些实质性问题。所以想要进大厂的朋友们要多多提升自己,扩充自己的技术。
最后给大家分享一些面试学习资料,希望会对你们有所帮助。
资料太多不能一次性分享出来。。。
看完记得点赞+收藏哦!在这里也祝愿读者们都可以拿到自己心仪的offer哦!