java中高级面试-内容清单

        寻寻觅觅,冷冷清清,凄凄惨惨戚戚之后。刍狗喘着气,叹着舌头,终于决定安下心好好捋捋了。

        以下是近几天找工作中整理的必懂知识点,拿走不谢,因为世界很大,而我是刍狗!

        欢迎各位领导批评指导~~

java基础

一、集合容器。

1.各实现类比较类型:如:list/set/map/queue、ArrayList/LinkedList、HashMap/HashTable、HashMap/TreeMap/TreeSet/HashSet

2.各实现类上下继承实现关系:

3.各实现类扩容机制:ArrayList/HashMap

4.各实现类的存储数据结构及添加(删除)细节原理:HashMap(hash表数组+链表+红黑树)、ArrayList(数组)、LinkedList(链表)、TreeMap(红黑树)、LinkedHashMap(链表+数组+红黑树)、ConcurrentHashMap(分区数组+hashmap的结构)等等

5.线程安全和非安全的实现类举例和用法:ConcurrentHashMap/Vector/HashTable

6.如何保证集合类的线程安全:a.用sychronized修饰;b.用Collections类转换(set=Collections.synchronizedSet(set););c.直接使用线程安全类(java.util.concurrent包下的东西)

7.BlokingQueue阻塞式队列的理解及应用

8.Collections的理解及应用

二、常识知识点(面试题一大堆,只列举我不知道的,各位不要局限于此啊)

1.J2SE 提供的最后一个批注是 @SuppressWarnings。该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默

2.捋下“==”和equals

    a.“==”两边参数是原始类型时,比较其jvm栈中或方法区常量池中的值是否相同;两边参数是自定义引用变量时,效果同equals,比较的是变量引用的实例对象是否是一个东西(即实例对象的地址是否相同)

    b.比较自定义对象应用中,equals只是比较是否相同,可以延伸到比较大小。因此要对两个自定义对象比较大小或排序,则需:(i)要将该类实现comparable接口重写obj1.compareTo(obj2)方法;(ii)外部或匿名内部类定义比较器类实现Comparator并重写compare(obj1,obj2)。注意:重写这两方法时需要按定义选取比较因素,若为字符串型直接取取hashcode

    c.实际业务中,通常要比较两个自定义对象的属性值是否相同,而Object.equals()默认比较的是否为指向同一地址,所以此时需要重写equals方法。重写时,必须重写Object.hashcode()方法,因为equals满足true的前提是hashcode值也相同。注意:String类重写了equals方法。

JVM

1.jvm内存区域:方法区、堆、jvm栈、native栈(理解native方法,如hashacode、wait(long)、notify、notifyAll、clone等)

2.jvm垃圾回收机制gc:什么时候(miniorGC/majorGC)、对谁(目标不可达对象、空间分配担保)、做了什么(分代回收算法、复制算法、标记-清除算法、标记-整理算法、根搜索算法、引用计数算法)

3.jmm理解及如何避免其引起的并发时变量共享问题(用volient修饰,将变量相对于应用游离化)

4.指令重排序

5.java执行过程

算法

1.常见的数据结构及应用:数组、散列表、链表、队列、栈、树(二叉树、平衡树、b树、b+树、b-树、红黑树等)、无向图、有向图(gc的根搜索算法应用)

2.排序算法:插入排序、希尔排序、冒泡排序、选择排序等(搞懂常见的就ok)

设计模式

1.单例:懒汉、饿汉、登记

2.观察者:zookeeper的监听节点特点

3.工厂:简单工厂、工厂方法      

4.门面/外观:socket编程的设计、shiro中subject的设计等

5.代理模式

6.。。。。。

数据库

1.mysql数据库引擎:innodb、myisam、memory了解这三个应该就够了,从区别回答

2.索引类型+实现原理+创建选型

3.mysql数据库优化方向:sql优化+集群+主从复制读写分离+分库分表依据

4.事务理解及管理

开发框架

1.spring框架作用+ioc+aop原理及应用场景,要能给出具体编码配置肯定加大分(我给不出,刍狗太笨,记不住,哈哈哈)

2.springMVC具体的工作流程

3.mybatis关键的配置+与hibernate的区别。(真有一个面试官问我Mybatis中参数为集合时在xml中如何处理)

4.spring如何管理事务的:通过aop。类比:分布式应用中如何管理事务的(代码级别):面试官给的答案是可以把拆分的流程封装并装入缓存里保证事务的ACID。

5.dubbo实现原理(若没用过可不用了解):五个组件需要理解。面试官:provider一个节点挂掉后是如何通知注册中心的?答:注册中心zookeeper与provider之间保持长连接,通过ticktime心跳。

6.zookeeper实现原理(若没用过可不用了解):实用场景、节点类型、实现原理机制(主要就是长连接心跳监测)

7.springboot(若没用过可不了解):springboot的好处、如何工作的流程。(刍狗就属于没用过的,但还想吹点牛逼,所以背了点硬知识)

中间件

1.kafka

2.rabitMQ

未完待续。。。。

猜你喜欢

转载自blog.csdn.net/u010730870/article/details/81782195