一些Java面试题,无答案,复习必备

1

HashMap和HashTable区别
HashMap实现原理(put、resize)
StringBuffer和StringBuilder区别
数据库事务隔离级别
如何避免幻读
数据库引擎(Innodb)的事务支持粒度
如何实现乐观锁
Synchronized实现原理
tcp三次握手,四次回首
osi7层模型
最后问了两个智力题:
两个粗细不均匀、长短不一的的绳子,燃烧一根分别需要60分钟,如何利用两根绳子,测量出15分钟?
一个篮球可以装多个乒乓球?

2

HashMap和ArrayList默认容量分别是多少?
HashMap和HashTable区别
HashMap什么时候扩容,几倍?
ArrayList什么时候扩容,几倍?
讲讲Java内存模型
讲讲gc算法
01背包问题,我说了dp的方案,但面试官说使用贪心算法

3

进程调度方式
进程与线程区别
多线程优点
进程同步有哪些方式
osi七层模型,以及对应都有什么协议
tcp三次握手和四次挥手
udp和tcp区别
http报文都有什么
客户端发起http到服务端返回的详细过程
编程实现求二叉数深度

4

GC算法都知道哪些?分别讲讲(serial pal new、parelle scavge、serial old、parelle old、CMS)主要讲了下cms
JVM内存模型。
Zookeeper原理,当有3台服务器,一个挂了,怎么保证服务的正常使用?
Spring 怎么接受web请求(应该是Spring MVC)流程是怎样的。
AOP原理
Spring Boot启动加载过程。

5

计算机网络:osi7层模式,对应协议有什么,都是干嘛的,建议把谢希仁的《计算机网络》传输层那一章好好看看,比如tcp的三次握手,四次挥手,流量控制,拥塞控制,看的时候,不能硬背,要自己理解,才不会忘记,而且在题目有变动的时候,也能应答如流。

操作系统:内存管理,进程调度,进程通信,linux常用命令。

数据库:事务(ACID)、三级范式(举例)、关联(join)、聚集函数、group by、order by、索引(b+树)、innodb与其他的区别(锁的粒度)

数据结构:(重头戏),除了广义表不需要重点看之外。《数据结构》严蔚敏
线性表,尤其是链表(头插法、尾插法、删除、双链表、带头结点与不带、循环链表等)、栈、队列。
哈弗曼树、二叉树、二叉排序树(删除、增加)、b树、b-树、b+树、b*树、红黑树、字典树、树的三种遍历( 代码实现,递归与非递归)。
图的遍历(dfs、bfs、递归与非递归)、拓扑排序、最小生成树(Dijkstra、Foyd、Prim、kruskal)。
查找:常用的就二分查找了。
排序:冒泡、插入(常用)、选择(常用)、快速(常用)、堆(常用)、归并(常用),希尔(不常用)、基数(不常用)
口诀:不稳定:快选希堆,其他则是稳定算法。
补充:
KMP算法及改进BM算法传送门
并查集,用于求朋友的朋友问题(最小生成树个数),并查集并查集路径优化
三路快速排序(快排优化),传送门
刷题:leetcode(top like100)

Java
Java基础倒是很少问,一般问源码层面问题,注意1.7和1.8的区别
1、《深入理解Java虚拟机》,最重要的是JMM(Java Memory Model),我自己的建议就是从JMM为中心,开始向四周扩展,构建知识网。
从JMM -> GC算法,GC Root的确定,线程逃逸问题,Java对象头(Synchronized实现原理),栈的原理,类加载机制问题,三级cache结构、内存屏障,即volatile关键字原理,线程调度等,全部可以从jmm发散,或者从某个点切入,也能讲到JMM。
2、集合:HashMap、HashTable、ConcurrentHashmap、LinkedHashmap、TreeMap、TreeSet、ArrayList、LinkedList、PriorityLinkedList源码等等
3、锁:乐观锁(版本号(mysql通过多版本号来解决幻读问题),cas),悲观锁(AQS,AbstractOwnableSynchronizer是重点)、ReentrantLock、CountDownLatch、CyclicBarrier、读写锁等等,与synchronized的原理对比等。
4、多线程:线程几种实现方式,状态转换,ThreadPoolExecutor参数解析,执行流程。
5、六大原则:
单一职责原则(Single Responsibility Principle SRP)
开闭原则(Open Close Principle OCP)
里氏替换原则(Liskov Substitution Principle LSP)
依赖倒转原则(Dependence Inversion Principle DIP)
接口隔离原则(Interface Segregation Principle ISP)
迪米特原则 (Least Knowledge Principle LKP)
6、常用设计模式(手写单例模式):工厂模式(bean)、代理模式(aop)、观察者模式(消息发布订阅、dubbo),说的这样都是在spring中可以联系起来的
Spring中常用的设计模式有哪些?
7、如何用线程打印abab问题,传送门
8、海量数据问题:归并排序思想,传送门
9、Spring mvc作为后端,讲述从前端请求到后端返回的全部流程,从dns解析到tcp建立连接,再到arp解析,再到反向代理,再到DispatchServlet、HandlerAdapter(通过HandlerMapping找到对应的requestmapping方法)、ModelAndView等,这个问题足以将基础和框架全部联系起来。
10、反向代理策略:轮询、随机、加权、最少连接、ip hash、dns最短等
11、四层代理(lvs)和七层代理(nginx)
12、分布式session问题
13、洗牌算法
14、zookeeper实现分布式锁,以及它的选举过程等
15、Spring ioc的原理,aop的原理(jdk和cglib,与静态代理AspectJ的区别)
16、Spring bean的是如何管理的?
17、在maven中如何出现了循环依赖问题,spring中的bean是如何注入的?
18、dubbo原理,架构图
19、一些常见的rpc框架,rpc和http有何区别
20、如何实现i++的原子操作,(加锁问题,volatile关键字(可见性(三级cache缓存失效,通过对比自身数据)、有序性(内存屏障)))
21、布隆过滤器
当然问题远远不止这么多,只是将一些我认为比较好的问题写了出来。

算法
刷leetcode,刚开始可能一天才能做一题,刷多了就好了,每种类型的题目都要去涉及,比如双指针(最常用)、回溯、递归、dp、bfs和dfs等。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值