盛大游戏面试题目小结

时间:2022-09-14 08:01:11

额,第一次面试,自己知识库还没有补充足,果然面完整个人都感觉不好了,这里会议起面试的问题,并贴出总结的答案,如果有哪里理解的不对,欢迎指正。

1.线程安全的队列

java提供线程安全的队列,主要分两种:阻塞队列(接口 BlockingQueue)和非阻塞队列(类ConcurrentLinkedQueue)

     阻塞队列就是提供阻塞操作,当操作失败时阻塞线程(ReentrantLock),直到满足操作条件时操作。BlockingQueue 的实现类:ArrayBlockingQueue、DelayQueue、LinkedBlockingQueue、PriorityBlockingQueue、SynchronousQueue。

     非阻塞队列就是提供非阻塞的操作,通过volatile实现原子性操作,实现类ConcurrentLinkedQueue,继承BlockingQueue


2.Java List Map你知道哪些

Collection(Collection是最基本的集合接口)
├List(List是一种有序集合跟Set集合不同的是,List允许有重复元素。
│├LinkedList(链表实现List,不同步)
│├ArrayList(数组实习List,不同步)
│└Vector(类似ArrayList,同步)
│ └Stack(栈)
└Set(不能有重复元素)
Map
Hashtable(不允许为null,同步)
├HashMap(允许为null,不同步)
└WeakHashMap


3.数据库连接池

对于一个复杂的数据库应用,情况就完全不同了。频繁的建立、关闭连接,会极大的减低系统的性能,因为对于连接的使用成了系统性能的瓶颈。

外部使用者可通过getConnection 方法获取连接,使用完毕后再通过releaseConnection方法将连接返回,注意此时连接并没有关闭,而是由连接池管理器回收,并为下一次使用做好准备。

资源重用、更快的系统响应速度、新的资源分配手段、统一的连接管理,避免数据库连接泄漏


4.线程同步实现

同步方法 :synchronized修饰

同步代码块 :synchronized修饰

volatile实现

重入锁:ReentrantLock,有lock()、unlock()方法实现同步

线程阻塞:BlockingQueue接口


5.spring mvc与struts2

Struts2是一个请求一个Action,SpringMVC是单例模式的

Struts2是基于类的横切,SpringMVC基于方法(可以和上条结合起来思考)粒度更细

一个入口是Filter,一个入口是Servlet。则两者个方面机制不同,比如拦截器实现机制

SpringMVC开发速度和性能较优于Struts2,流程更容易理解

Spring体系更加强大和活跃