小姐姐说:你一点都不懂表达,一点都不懂爱情,一点也不爱我!
你答:你知道吗,我听说过一个这样的故事,讲的就是有一个小女孩和一个男孩在一起,小男孩呢很不幸是位聋哑人,虽然如此,但是他们的日子过得特别的美满。有一天小女孩因为切菜不小心把手给弄破了(ps:这种层度不用打破伤风哈),小男孩翻遍家里没有创口贴,于是冲出家门来到街边的小店买创口贴,由于小男孩不会说话,一直尽力描述,无奈店主不知其意,这是小男孩看见店主桌上的剪刀,直接拿起往手上戳,鲜红的血冒出(ps:这种层度也不用打破伤风哈),小男孩高兴的拿着创口贴往家里飞奔...
爱情有时候,并不需要花言巧语,我不善言辞,但一直爱你!!
看完那我们开始咯
1 自我介绍哈(这块没有一点准备的可以看面试java后端面经_1)
2 类加载的三种方式(1:命令行启动应用时由JVM初始化加载 2:通过Class.forName() 方式动态加载 3:通过ClassLoder.loadClass() 方法动态加载)
3 如何判断对象已死(1:引用计数法(java中没用,因为,没办法解决循环引用:A引用B,B也引用A,但是没有其他引用去引用A和B,这时AB都是垃圾,但是引用计数法无法判断)。2:可达性分析算法:通过GC Roots为起始点向下搜索,说白了就是通过你已知的活对象,去找这对象里的引用,再找引用对象里的引用,一直这样下去,找的到的就是活的。那么哪些对象可以作为GC Roots呢:1虚拟机栈中引用的对象。2方法区静态属性引用的对象。3方法区中常量引用的对象。4本地方法栈中JNI(一般说的是Native方法)引用的对象)
4 常见的垃圾回收算法(1标记清除:通过可达性分析算法标记好活对象,然后清除掉没标记得对象,有个缺点:空间很零碎所以有了标记整理算法。2复制算法:同样是可达性分析后,活对象呢就直接复制到一片新内存中,之前的内存中所有对象直接清除,优点是没有零碎空间产生,但是消耗了很大内存。3标记整理算法:先标记清除再整理。4分代算法:这里分代是将堆里的对象进行分代,比如蚂蚁爷爷属于老年代,刚出生的蚂蚁孩子属于新生代等,分完代后呢 其实没有自己的算法,用的都是前面说的算法,但是分代特点是:不同的代,用合适自己的算法 比如:新生代很多对象都是很快消亡所以用复制算法,老年代里的对象都是存活率高的用:标记清除或标记整理)
5 JVM常见的命令工具包括(jps用于查询正在运行的JVM进程。 jstat可以实现显示本地或远程JVM进程中类加载、内存、垃圾回收、JIT编译等数据。 jinfo用于查询当前运行着的JVM属性和参数的值。 jmap用于显示当前堆永久代的详细信息。 jhat 用于分析使用jmap生成的dump文件,是JDK自带的。 jstack用于生成当前线程的所有快照,用于定位线程长时间出现停顿的原因)
6 重写equals方法要遵循哪些通用的约定(自反性:x.equals(x)要成立。对称性:x.equals(y) 和y.equals(x)要成立。传递性:x、y、z x.equals(y) 和y.equals(z)成立 那x.equals(z)要成立。一致性:说白点就是只要进行equals的对象不变,那么结果就一直不能变。非空性:对于任意非空引用x,x.equals(null)应该返回false)
7 关键字transient(简单地说,就是让某些被修饰的成员属性变量不被序列化。transient不能修饰类和方法,被transient关键字修饰的变量不能被序列化,一个静态变量不管是否被transient修饰均不能被序列化。)
8 redis的持久化方式中 RDB方式优缺点(RDB:是指用数据集快照的方式记录redis数据库的所有键值对 优点:1.只有一个文件 dump.rdb 方便持久化。2.容灾性好,一个文件可以保存到安全磁盘。3.性能最化,fork子进程来完成写操作,让主进程继续处理命令。4.相对于数据集大时,比AOF启动效率高。缺点:数据安全性较低)
9 redis的持久化方式中AOF方式优缺点(AOF:是指所有的命令行记录以redis,命令请求协议的格式保存为aof文件 优点:数据安全,通过append模式写文件,即使中途服务器宕机可以通过redis-check-aof工具解决数据一致性问题。3AOF机制的rewrite模式。缺点:1文件比RDB形式文件大。2数据集大比RDB启动效率低)
10 讲解一下HTTP请求里的Header有什么作用(accept:浏览器端可以接受的媒体类型。Accept-Encoding: 浏览器申明自己接收的编码方法。Accept-Language:浏览器申明自己接收的语言。Connection:连接状态,close 的话就要新开连接。Host:请求报头域主要用于指定被请求资源的Internet主机和端口号。User-Agent:告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本。)
11 linux中grep的使用(用于过滤/搜索的特定字符、如:grep "qqq\|aaa" abc.txt 是把qqq和aaa从abc.txt中筛选出来,grep "q" abc.txt 把小q筛选出来 ,如grep -i "q" abc.txt这样就不区分大小写了 ,还有很多参数以及正则表达式,不太明白的童鞋百度哦)
祝早日get心仪offer
大量面试经验以及学习资料书籍请关注:AVAJ
回复"offer"进行获取
365篇大厂java面经 你想要的我这里都有