100天准备找工作倒计时:第十二天 (美团面试倒计时十天!)
室友过生日,出去吃了个饭唱了个K,心情好多了~😁😁
算法题:
1.二叉树后序遍历(力扣每日一题):做过最简单的一次每日一题了可能
2.两个链表相加成新的链表:自己想了一下把两个链表反转然后相加,然后再反转回来,结果看通过的答案还真是这么做的,感觉这样做很笨,有没有大佬做过更好的解法?
面试题:
1.代理模式:静态代理(代理类中传入一个被代理类),java动态代理(编写一个动态处理器handler,先通过构造器传入一个被代理对象,然后调用一个newProxyInstance的方法,传入被代理类的类加载器,接口的类型以及参数动态处理器 ),CGLIB代理(通过底层字节码技术创建一个被代理类的子类,并在子类中使用方法拦截的技术拦截被代理类调用的方法并顺势织入横向逻辑),打破了前两种方法基于接口代理的桎梏;总结来说,CGLIB创建的对象比java动态代理生成的对象性能强但是花费的时间多,所以对于单例的对象无需重复创建的对象可以使用CGLIB,反之使用java动态代理
2.AOP的实现方式:AOP中java动态代理和CGLIB代理都有使用,在spring5的源码中会简单的判断一下代理对象是否有实现接口,有的话就走JDK分支,没有的话则使用CGLIB;
3.CAS(compare and swap)的使用:在Java中的Atomic类中使用,在AtomicInteger类中,用volatile修饰了一个变量(意味着该变量易变),AtomicInteger类还提供了一个自增的方法,在该方法内就调用了一个compareAndSet方法,该方法两个参数一个是预期的之一个是更新的值;
4.CAS的隐患:ABA问题(通过增加版本号:A1 B1 A2 来解决) 长时间自旋导致消耗资源
5.Undo和Redo:撤销和重做,Undo用来撤销失败的事务,Redo用来恢复成功的事务
接下来的内容推荐程序汪发过的一篇推文:https://my.oschina.net/u/4062805/blog/3216265
6.数据库索引(内容超多,看了很久,总结出来问题写在这,具体答案就不写了太多太多了):
索引是什么;为什么使用索引;索引的数据结构(延申出来B树和B+树数据结构的);索引的类型;索引使用策略;不使用索引的情况;最左匹配原则;索引的优缺点;Myisam和Innodb中索引的区别;
7.B树和B+树(也挺复杂的)::两种树具体结构类型和特性,具体的查找过程,B+树对比B树的优点;
8.数据库的分类:IO密集型和CPU密集型:
9.数据库查询慢的排查思路和解决方法:
IO密集型:投影了全表字段、全表查询、表结构设计不佳、索引设计不佳等问题:内存缓存区过小导致IO次数过多;网络带宽较小;
CPU密集型:可能因为过于复杂的查询语句、存储过程、触发器、自定义函数等;锁竞争;高并发;
10.常用的设计模式:
单例模式:懒汉式(普通懒汉,同步方法懒汉,双重检查懒汉,静态内部类懒汉),饿汉式;
工厂模式:简单工厂,抽象工厂,静态工厂
代理模式:
装潢模式:
11.HashMap为什么线程不安全:JDK1.7中,在扩容操作时,由于使用了头插法,可能会造成环形数据链或者丢失数据;1.8中多线程下PUT数据可能会发生数据覆盖的情况
12.JVM内存模型(堆、虚拟机栈、本地方法栈、程序计数器、方法区)
13.对象从创建到使用到销毁的全过程:
用户创建一个对象,JVM首先会去方法去中找是否有对应的类信息,如果没有的话用使用类加载器将该类的字节码文件加载至方法区,并将该类的类型信息存放在方法去;
接着JVM为该对象的实例分配内存空间,这个实例持有者指向方法去类型信息的引用;
在此运行的JVM进程中,首先会创建一个线程运行该用户程序,同时还创建了一个虚拟机栈,用来跟踪该线程运行过程中调用的一系列方法,每调用一个方法就会压入一个栈帧,栈帧存放了方法的参数、局部变量和临时数据。
JVM根据引用指向的堆中的对象实例的内存地址,定位到对应的实例,由于堆中实例持有着指向方法去中类信息的引用,从而可以获得实例方法的字节码信息并执行方法包含的指令
使用结束后将引用指向null
JVM GC
接着JVM为该对象的实例分配内存空间,这个实例持有者指向方法去类型信息的引用;
在此运行的JVM进程中,首先会创建一个线程运行该用户程序,同时还创建了一个虚拟机栈,用来跟踪该线程运行过程中调用的一系列方法,每调用一个方法就会压入一个栈帧,栈帧存放了方法的参数、局部变量和临时数据。
JVM根据引用指向的堆中的对象实例的内存地址,定位到对应的实例,由于堆中实例持有着指向方法去中类信息的引用,从而可以获得实例方法的字节码信息并执行方法包含的指令
使用结束后将引用指向null
JVM GC
海康和中兴迟迟没有消息,听说很多同学已经到人事面了,感觉自己凉凉了,心情真的很沉重,但是也没有办法,只能继续走下去。