1.http无状态:交互场景无法保持登录状态。
需要session和cookie,session是服务器保存客户数据也需要用到cookie来获取sessionid,cookie是服务器发给浏览器保存。
2.进程是系统资源调度基本单位,程序执行的过程。线程更小粒度。
3.进程通信方式:管道,内存共享,socket,信号,信号量,消息队列。
4.线程通信方式:volatile共享内存,wait,signal,join消息传递,管道流。
5.为什么用b+树:B+树的中间节点没有附加数据的。所以同样大小的磁盘页可以容纳更多的节点元素。(这就意味着B+会更加矮胖,查询的IO次数会更少)。其他树总有缺点。
6.volatile原理:每个线程有自己的副本存变量,volatile保证每个变量刷新时更新所有主内存和副本内存的相应的变量值。
7.i++实现线程安全:原子类,锁。
8.synchronized原理:每一个锁都对应一个monitor对象,当一个monitor被某个线程持有后,它便处于锁定状态。synchronized原理从反编译的同步代码块可以看到同步块是由monitorenter指令进入,然后monitorexit释放锁,在执行monitorenter之前需要尝试获取锁,如果这个对象没有被锁定,或者当前线程已经拥有了这个对象的锁,那么就把锁的计数器加1。当执行monitorexit指令时,锁的计数器也会减1。当获取锁失败时会被阻塞,一直等待锁被释放。
9.ApplicationContext的内部结构与使用,用都没怎么用过就要背原理,真恶心。
10.反射机制允许程序在运行时取得任何一个已知名称的class的内部信息,包括包括其modifiers(修饰符),fields(属性),methods(方法)等,并可于运行时改变fields内容或调用methods。那么我们便可以更灵活的编写代码,代码可以在运行时装配,无需在组件之间进行源代码链接,降低代码的耦合度;还有动态代理的实现等等;但是需要注意的是反射使用不当会造成很高的资源消耗!
type和key看使用了哪个索引
刷java面经
最新推荐文章于 2024-11-09 12:43:52 发布