1 自我介绍(简单大方的自我介绍)
2 讲一下项目
3 面向对象的特性(封装、继承、多态)
4 多态的几种实现方式(编译时的多态和运行时的多态2种,对应的是重载和重写)
5 虚拟机如何实现多态(类信息会被存在方法表中,子类会在方法表中产生对父类方法的引用,但是如果子类重写了父类的方法,那么子类中也会产生对自己覆盖父类的方法的引用,并且会覆盖掉指向父类方法的引用,因而会调用子类的方法)
6 垃圾回收算法
(判断对象是否存活的算法:1引用计数,2根搜索法。垃圾回收算法:1标记清除算法、2标记整理算法、3复制算法、4分代收集算法)
7 spring启动过程
(web容器启动时contextLoaderListener会监听到这个事件,其contextInitialized方法会被调用spring初始化上下文(实际上是IOC上下文)。接着开始初始化web.xml中配置的Servlet(DispatcherServlet),contextLoaderListener初始化完后,紧着着开始初始化web.xml中的servlet,这里以DIspatherServlet为例,其初始化时会建立自己的IOC上下文用以持有Spring MVC相关的Bean,最后再将初始化完成的Servlet注册到ServletContext中,这样每个Servlet都可以持有自己的上下文,同时又能共享根上下文,即IOC容器上下文WebApplicationContext。)
8 tomcat的启动过程
(
1.http://localhost:8080/wsota/wsota_index.jsp
2.发送请求到8080端口,被Connector监听获取
3.Connector完成http协议解析,把请求交给Service的Engine处理,等待Engine的返回
4.Engine获取localhost:8080/wsota/wsota_index.jsp,进行虚拟主机的匹配,找到localhost的Host
5.Engine获取wsota/wsota_index.jsp,进行虚拟目录的匹配,找到Host的wsota对应的Context
6.path为wsota的Context对象获取wsota_index.jsp,开始找到这个url的映射的servlet,主要看.jsp后缀
7.开始构造httpServletRequest和HttpServletResponse对象,作为参数传递给Servlet的doGet和doPost方法
8.Context把处理之后的HttpServletResponse对象返回给Host
9.Host对象把HttpServletResponse对象返回给Engine
10.Engine对象把HttpServletResponse对象返回给Connector
11.Connector对象把HttpServletResponse返回给浏览器
12.Connector关闭Socket
)
9 ArrayList与LinkedList区别 他们都是线程安全的吗
(首先两者都是实现了List接口的容器类,即都可以对元素进行增删改查进行操作,ArrayList基于动态数组的数据结构,LinkedList是基于链表结构,在ArrayList和LinkedList在列表末尾增加元素的开销都是固定的,而在ArrayList中对元素进行增删的话其后的元素将会移动,这样就增大开销了,对于LinkedList对元素增删时就不需要对元素进行移动,但是会有创建对象和引用指向的开销问题,一般来说对元素增删多用LinkedList,而对元素查询多用ArrayList。都是线程不安全的,因为方法没加锁呀)
10 map了解吗
11 HashMap如何实现线程安全
(首先HashMap本身是非线程安全的,因为方法没上锁,这里可以用方法上锁了的HashTable,或者说用ConcurrentHashMap,再或者使用 java.util.Collections.synchronizedMap() 方法包装 HashMap object,得到线程安全的Map)
12 ConcurrentHashMap如何实现线程安全
(JDK1.7采用segment分段锁机制底层数组+链表,每段加reentrantLock可重入锁,JDK1.8取消了分段锁采用CAS+synchronized来进行控制底层数组+链表+红黑树)
13 你有什么可以问我
祝您早日get心仪offer!
本文内容来自牛客网的叫我大表哥已获取原作者转载许可