2018北京3月份java面试题(3~5年工做经验)

仅提供面试知识点,详细内容后续补充

1、java基础java

     1.final修饰方法、类、成员变量的特色mysql

     2.集合框架 ArrayList,HashMap,ConcurrentHashMap(这三个问到的频率最高)面试

      知识点:底层数据结构,知道哪些是线程安全的,线程不安全的,最好阅读一下源码,构造方法有几个,默认参数。(jdk1.8和以前的版本区别)redis

      ConcurrentHashMap 为何是安全的?看一下put方法;能说出来细节,锁加在什么位置,hash冲突怎么 处理;扩容之后存储顺序位置会发生什么变化。
算法

     3.多线程 Lock和Synchronized,join和yieldspring

知识点:二者之间的区别(进阶版:lock的底层实现原理AbstractOwnableSynchronizer,synchronized底层monitor对象)公平锁和非公平锁, Synchronized加在静态方法上和非静态方法上用的锁是什么,补充CAS知识点sql

     4.atomic包下面的AtomicInteger等(保证原子性),volatile保证可见性(指令重排序、内存屏障),ThreadLocal数据库

     5.线程池有几种,区别,详细了解一下构造方法的各个参数。进阶:实现线程池的思路设计模式

     6.java IO和NIO的区别tomcat

     7.java反射机制,在哪儿用到了

     8.深克隆和浅克隆

2、数据结构

   1.算法:冒泡排序(至少掌握一种排序算法)、二分法查找

   2.手写一个栈 先进后出

   3.二叉树、红黑树

3、框架

   1.Spring:AOP,IOC 最好能翻阅spring源码,用到的设计模式,隔离级别,传播属性

   2.Mybatis中的$和#的区别

   3.dubbo:工做原理,集群容错,负载均衡

4、数据库

   1.mysql innodb引擎特色;索引B+tree,sql优化,sql分析方法;

   2.redis 数据类型,主从原理,持久化方式,事务;

5、jvm

   1.gc算法:标记整理、复制、压缩

   2.堆、栈、方法区

6、调优

   1.tomcat NIO,线程池。

7、线上问题分析方法

   1.top命令,jstat,jmap等

8、计算机网络

  1.三次握手、四次挥手能画出图,以及各个状态表明的意义

  2.http和https

  3.TCP和UDP