加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营 > 正文

各大公司Java后端开发面试题总结

发布时间:2020-12-31 15:31:19 所属栏目:运营 来源:网络整理
导读:ThreadLocal(线程变量副本)Synchronized实现内存共享,ThreadLocal为每个线程维护一个当地变量。回收空间换时刻,它用于线程间的数据断绝,为每一个行使该变量的线程提供一个副本,每个线程都可以独立地改变本身的副本,而不会和其他线程的副本斗嘴。ThreadL

漫衍式Session框架

  1. 设置处事器,Zookeeper集群打点处事器可以同一打点全部处事器的设置文件
  2. 共享这些Session存储在一个漫衍式缓存中,可以随时写入和读取,并且机能要很好,如Memcache,Tair。
  3. 封装一个类担任自HttpSession,将Session存入到这个类中然后再存入漫衍式缓存中
  4. 因为Cookie不能跨域会见,要实现Session同步,要同步SessionID写到差异域名下。

适配器模式:将一个接口适配到另一个接口,Java I/O中InputStreamReader将Reader类适配到InputStream,从而实现了字节约到字符流的准换。装饰者模式:保持原本的接口,加强原本有的成果。FileInputStream 实现了InputStream的全部接口,BufferedInputStreams担任自FileInputStream是详细的装饰器实现者,将InputStream读取的内容生涯在内存中,而进步读取的机能。


Spring事宜设置要领:1.切点信息,用于定位实验事物切面的营业类要领2.节制事宜举动的事宜属性,这些属性包罗事物断绝级别,事宜撒播举动,超时时刻,回滚法则。

Spring通过aop/tx Schema 定名空间和@Transaction注解技能来举办声明式事物设置。


Mybatis每一个Mybatis的应用措施都以一个SqlSessionFactory工具的实例为焦点。起首用字节畅通过Resource将设置文件读入,然后通过SqlSessionFactoryBuilder().build要领建设SqlSessionFactory,然后再通过SqlSessionFactory.openSession()要领建设一个SqlSession为每一个数据库事宜处事。经验了Mybatis初始化 –>建设SqlSession –>运行SQL语句,返回功效三个进程


Servlet和Filter的区别:整的流程是:Filter对用户哀求举办预处理赏罚,接着将哀求交给Servlet举办处理赏罚并天生相应,最后Filter再对处事器相应举办后处理赏罚。

Filter有如下几个用处:Filter可以举办对特定的url哀求和响应做预处理赏罚和后处理赏罚。在HttpServletRequest达到Servlet之前,拦截客户的HttpServletRequest。按照必要搜查HttpServletRequest,也可以修改HttpServletRequest头和数据。在HttpServletResponse达到客户端之前,拦截HttpServletResponse。按照必要搜查HttpServletResponse,也可以修改HttpServletResponse头和数据。

现实上Filter和Servlet极其相似,区别只是Filter不能直接对用户天生相应。现实上Filter里doFilter()要领里的代码就是从多个Servlet的service()要领里抽取的通用代码,通过行使Filter可以实现更好的复用。

Filter和Servlet的生命周期:1.Filter在web处事器启动时初始化2.假如某个Servlet设置了 1 ,该Servlet也是在Tomcat(Servlet容器)启动时初始化。3.假如Servlet没有设置1 ,该Servlet不会在Tomcat启动时初始化,而是在哀求到来时初始化。4.每次哀求, Request城市被初始化,相应哀求后,哀求被烧毁。5.Servlet初始化后,将不会跟着哀求的竣事而注销。6.封锁Tomcat时,Servlet、Filter依次被注销。


HashMap与HashTable的区别。1、HashMap长短线程安详的,HashTable是线程安详的。2、HashMap的键和值都应承有null值存在,而HashTable则不可。3、由于线程安详的题目,HashMap服从比HashTable的要高。

HashMap的实现机制:

  1. 维护一个每个元素是一个链表的数组,并且链表中的每个节点是一个Entry[]键值对的数据布局。
  2. 实现了数组+链表的特征,查找快,插入删除也快。
  3. 对付每个key,他对应的数组索引下标是 int i = hash(key.hashcode)&(len-1);
  4. 每个新插手的节点放在链表首,然后该新插手的节点指向原链表首
  5. Java进修交换QQ群:589809992 我们一路学Java!

HashMap和TreeMap区别交情链接:

HashMap斗嘴交情链接:交情链接:交情链接:交情链接:


HashMap,ConcurrentHashMap与LinkedHashMap的区别

  1. ConcurrentHashMap是行使了锁分段技能技能来担保线程安详的,锁分段技能:起首将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁会见个中一个段数据的时辰,其他段的数据也能被其他线程会见
  2. ConcurrentHashMap 是在每个段(segment)中线程安详的
  3. LinkedHashMap维护一个双链表,可以将内里的数据按写入的次序读出

ConcurrentHashMap应用场景1:ConcurrentHashMap的应用场景是高并发,可是并不能担保线程安详,而同步的HashMap和HashMap的是锁住整个容器,而加锁之后ConcurrentHashMap不必要锁住整个容器,只必要锁住对应的Segment就好了,以是可以担保高并发同步会见,晋升了服从。2:可以多线程写。ConcurrentHashMap把HashMap分成多少个Segmenet1.get时,不加锁,先定位到segment然后在找到头结点举办读取操纵。而value是volatile变量,以是可以担保在竞争前提时担保读取最新的值,假如读到的value是null,则也许正在修改,那么就挪用ReadValueUnderLock函数,加锁担保读到的数据是正确的。2.Put时会加锁,一致添加到hash链的头部。3.Remove时也会加锁,因为next是final范例不行改变,以是必需把删除的节点之前的节点都复制一遍。4.ConcurrentHashMap应承多个修改操纵并发举办,其要害在于行使了锁疏散技能。它行使了多个锁来节制对Hash表的差异Segment举办的修改。

ConcurrentHashMap的应用场景是高并发,可是并不能担保线程安详,而同步的HashMap和HashTable的是锁住整个容器,而加锁之后ConcurrentHashMap不必要锁住整个容器,只必要锁住对应的segment就好了,以是可以担保高并发同步会见,晋升了服从。

ConcurrentHashMap可以或许担保每一次挪用都是原子操纵,可是并不担保多次挪用之间也是原子操纵。交情链接:


Vector和ArrayList的区别交情链接:


ExecutorService service = Executors…. ExecutorService service = new ThreadPoolExecutor() ExecutorService service = new ScheduledThreadPoolExecutor();

ThreadPoolExecutor源码说明

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读