java高级工程师架构面试题有哪些?java高级工程师架构面试题及答案

在java行业,如果你能做到java高级工程师,那么就不用担心你的前途了,不管是在职位上或者薪资待遇上,这都非常可观,可是java高级工程师可不是那么容易当上的,首先就要通过java面试这一关,那么下面我们就给大家分享一些java高级工程师架构面试题及答案!

1.Hashtable、HashMap、TreeMap 有什么不同?

Hashtable 是早期 Java 类库提供的一个哈希表实现,本身是同步的,不支持 null 键和值,由于同步导致的性能开销,所以已经很少被推荐使用。HashMap 是应用更加广泛的哈希表实现,行为上大致上与 HashTable 一致,主要区别在于 HashMap 不是同步的,支持 null 键和值等。

通常情况下,HashMap 进行 put 或者 get 操作,可以达到常数时间的性能,所以它是绝大部分利用键值对存取场景的首选。TreeMap 则是基于红黑树的一种提供顺序访问的 Map,和 HashMap 不同,它的 get、put、remove 之类操作都是 O(log(n))的时间复杂度,具体顺序可以由指定的 Comparator 来决定,或者根据键的自然顺序来判断。

2.什么情况下 Java 程序会产生死锁?

死锁是一种特定的程序状态,在实体之间,由于循环依赖导致彼此一直处于等待之中,没有任何个体可以继续前进。死锁不仅仅是在线程之间会发生,存在资源独占的进程之间同样也可能出现死锁。通常来说,我们大多是聚焦在多线程场景中的死锁,指两个或多个线程之间,由于互相持有对方需要的锁,而永久处于阻塞的状态。

大部分死锁本身并不难定位,掌握基本思路和工具使用,理解线程相关的基本概念,比如各种线程状态和同步、锁、Latch 等并发工具,就已经足够解决大多数问题了。

3.java中实现多态的机制是什么?

重载:有同样的方法名称不同的参数列表。a(){}a(Stringb){}...

重写(也称覆盖):即可以重新编写与父类同名方法形象的称之为重写(覆盖)。

4.描述一下JVM加载class文件的原理机制?

VM中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java中的类加载器是一个重要的Java运行时系统组件,它负责在运行时查找和装入类文件中的类。

5.当数据表中A、B字段做了组合索引,那么单独使用A或单独使用B会有索引效果吗?(使用like查询如何有索引效果)

看A、B两字段做组合索引的时候,谁在前面,谁在后面,如果A在前,那么单独使用A会有索引效果,单独使用B则没有,反之亦然。同理,使用like模糊查询时,如果只是使用前面%,那么有索引效果,如果使用双%号匹配,那么则无索引效果。

6.一条sql执行过长的时间,你如何优化,从哪些方面?

(1)查看sql是否涉及多表的联表或者子查询,如果有,看是否能进行业务拆分,相关字段冗余或者合并成临时表;

(2)涉及链表的查询,是否能进行分表查询,单表查询之后的结果进行字段整合;

(3)如果以上两种都不能操作,非要链表查询,那么考虑对相对应的查询条件做索引。加快查询速度;

(4)针对数量大的表进行历史表分离(如交易流水表);

(5)数据库主从分离,读写分离,降低读写针对同一表同时的压力,至于主从同步,MySQL有自带的binlog实现 主从同步;

(6)explain分析sql语句,查看执行计划,分析索引是否用上,分析扫描行数等等;

其实在java面试中,最重要的还是要讲java基础打牢,因为资深java工程师面试题也离不开基础,将基础学好,再不断的实践提高技能,这样在面试时候就会顺利通过!最后大家如果想要了解更多Java面试题知识,敬请关注奇Q工具网。

推荐阅读:

springmvc和springboot的区别有哪些?springmvc执行流程是什么?

java线程怎么通信?java线程通信方法详解

redis面试题有哪些?redis面试题及答案