Java面试题

工作快三年了,也待过几家公司,有了一些面试的经验,整理了一下面试经常遇到的问题,当然答案不完全对,希望相互讨论吧!

Java基础相关
  • 1 集合相关
    arraylist 和linkedlist的区别,以及内部实现
    hashmap的数据结构,hashmap的扩容,hashmap是否线程安全,如何保证线程安全
    currenthashmap如何实现
    copyonwritearraylist的实现
    arrayblockingqueue等阻塞队列的实现
  • 2 多线程相关
    线程的状态以及相互转化
    线程的创建的两种方式
    线程的常用方法sleep,yeild,join等等
    synchronzied的使用,synchronized和lock的区别
    线程通信,写出生产者和消费者
    wait和sleep的区别,wait 和notify的区别
    reentrantlock的实现原理
    countdownlatch和cyclicbarrier的区别,以及现实中的使用
    线程池的原理,线程池的参数意义,线程池的拒绝策略有哪些分别有什么区别,线程池的分类有哪些分别在上面情况下使用
  • 3 其他相关
    static的使用
    final的使用
    volitale的使用以及原理
    单例的写法
JVM相关

垃圾回收算法有哪些,分别怎么回收
jvm的内存结构画出来
JVM参数怎么调优
怎么处理线上oom问题

数据库相关

分页sql怎么写
数据库的left join 和right join 和join的区别,以及left join on 和 join where 的区别
数据库索引分类有哪些,联合索引如何使用,索引的原理是什么?
如何在100w的数据里快速分页,找出90w 之后的10条
数据库事务的隔离级别
脏读幻读不可重读读分别怎么出现
innodb和myisam区别

缓存相关

memcache 和 redis 如何做分布式锁
memcache 和redis有什么区别
redis 有哪些优点和缺点,memcache 有哪些优点和缺点
memcache 和redis 使用的时候遇到的那些坑
emcache 如何集群,redis 如何实现集群

springMVC和Mybatis相关

springmvc 什么叫aop,aop的原理是什么
springmvc 什么叫做ioc,原理是什么
springmvc 事务的传播行为和事务的隔离级别
springmvc一个请求的完整路径画出来
mybatis的# 和$有什么区别

RPC和消息相关和分布式

dubbo 的组成
dubbo 的底层实现
dubbo的负载均衡算法
消息的作用,消息的使用
分布式锁如何实现
分布式session如何实现

数据结构和算法相关
  • 1 链表相关
    a:链表的逆序
    b: 不知道长度链表找中间元素
    c: 两个有序链表合并一个链表
  • 2 排序相关
    a: 冒泡排序
    b: 比较排序
    c: 插入排序
    d: 快速排序
    e: 堆排序
    f: 希尔排序
    g: 归并排序
  • 3 树
    a: 二叉树遍历 前中后序(递归非递归)
    b: 红黑树
    c:求树的深度和叶子节点个数等等
  • 4 算法相关
    a: 递归算法(斐波尼奇数列)
    b: 二分查找
    c: top k算法
    d: 字符串中求只出现一次的字符 O(n)
    e:一个数组里,元素只有一个出现一次,其余出现两次找出出现一次的数字 O(n)

你可能感兴趣的:(Java面试题)