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

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

一、java基础

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

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

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

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

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

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

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

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

     6.java IO和NIO的区别

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

     8.深克隆和浅克隆

二、数据结构

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

   2.手写一个栈 先进后出

   3.二叉树、红黑树

三、框架

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

   2.Mybatis中的$和#的区别

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

四、数据库

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

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

五、jvm

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

   2.堆、栈、方法区

六、调优

   1.tomcat NIO,线程池。

七、线上问题分析方法

   1.top命令,jstat,jmap等

八、计算机网络

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

  2.http和https

  3.TCP和UDP



     


   

猜你喜欢

转载自blog.csdn.net/u010694428/article/details/79720009