java面试常见问题

1. java基础(实验室队友总结)

  1. JDK动态加载。
  2. 双亲委派类加载模型???https://www.cnblogs.com/wxd0108/p/6681618.html

该方法会首先调用 findLoadedClass()方法来检查该类是否已经被加载过;如果没有加载过的话,会调用父类加载器的 loadClass()方法来尝试加载该类;如果父类加载器无法加载该类的话,就调用 findClass()方法来查找该类。因此,为了保证类加载器都正确实现代理模式,在开发自己的类加载器时,最好不要覆写 loadClass()方法,而是覆写 findClass()方法。

  1. Java对象的回收方式,回收算法。  4
  2. JVM的调优参数?(-Xmn-Xms,,,)
  3. 类加载器结构。https://blog.csdn.net/boyu  peng/article/details/47951037
  4. CAS机制和锁。https://www.cnblogs.com/myopensource/p/8177074.html
  5.  CMSG1了解么,CMS解决什么问题,说一下回收的过程。CMS回收停顿了几次,为什么要停顿两次。  3
  6. 介绍一下java中的堆和栈?    2
  7. Java栈什么时候会发生内存溢出,Java堆呢,说一种场景,我说集合类持有对象。
  8. intInteger有什么区别
  9. 面向对象三大特点?你怎么理解多态?Java中是怎么实现多态的?
  10. Java里用过哪些集合框架。
  11. 设计模式知道哪些? 能手写代码吗?    4
  12. 装饰器模式和代理模式有什么区别?   2
  13. 匿名内部类是否可以继承类?是否可以实现接口?
  14. tryfinally
  15. synchronized锁升级的过程,说了偏向锁到轻量级锁再到重量级锁,然后问我它们分别是怎么实现的,解决的是哪些问题,什么时候会发生锁升级。synchronized锁实现原理。
  16. AQS?Lock?https://blog.csdn.net/m_xiaoer/article/details/73459444
  17. 用过线程池吗?有那些参数? 有什么好处?  (5)
  18. 线程和进程的区别。   (3)
  19. HashMap中的get()put()方法是如何实现的?  4
  20. HashMap可以用在哪些场景?
  21. ArrayListLinkedList底层,怎么扩容的。      3
  22. List/ Set/ Map有什么区别?
  23. HashMap及线程安全的ConcurrentHashMap  7

https://www.cnblogs.com/chengxiao/p/6842045.html

https://www.cnblogs.com/study-everyday/p/6430462.html

Concurrenthashmap 在JDK1.8中 put函数的操作步骤:

  • 如果没有初始化就先调用initTable()方法来进行初始化过程
  • 如果添加成功就调用addCount()方法统计size,并且检查是否需要扩容
  • 最后一个如果该链表的数量大于阈值8,就要先转换成黑红树的结构,break再一次进入循环。
  • 如果存在hash冲突,就加锁来保证线程安全,这里有两种情况,一种是链表形式就直接遍历到尾端插入,一种是红黑树就按照红黑树结构插入。
  • 如果还在进行扩容操作就先进行扩容
  • 如果没有hash冲突就直接CAS插入

get操作的流程很简单,也很清晰,可以分为三个步骤来描述

  • 计算hash值,定位到该table索引位置,如果是首节点符合就返回
  • 如果遇到扩容的时候,会调用标志正在扩容节点ForwardingNode的find方法,查             找该节点,匹配就返回
  • 以上都不符合的话,就往下遍历节点,匹配就返回,否则最后就返回null.
    1. 多线程用过吗?让举例子
    2. SynchronizedLock  6
    3. synchronizedvalatile关键字,有什么区别,如何理解valatile保证内存有序性。https://blog.csdn.net/liurenyou/article/details/72808274
    4. 知道current包下的其他类吗?
    5. 乐观锁如何保证线程安全?
    6. 用过线程池吗,如何用?
    7. Java中有两种异常
    8. TCP流程。我就讲了三次握手和四次挥手。然后问为什么有TIME_WAIT 3
  1. Mysql数据库
    1. SQL优化。(3
    2. 数据库隔离级别。  2
    3. 介绍一下索引?怎么使用索引的? 4
    4. hash索引和b树索引的区别,适用场景。
    5. innodb中聚集索引,非聚集索引。
    6. 数据库怎么实现分库分表https://blog.csdn.net/xlgen157387/article/details/53976153
    7. 了解哪些技术是牺牲了一致性来保证可用性的。
    8. 字段属性 varcharchar区别
    9. 优化慢查询的过程
  2. 算法
    1. 两个有序数组,数组中存在重复数字,合并成一个有序数组,去除重复数字。 2
    2. 10亿个数去重。 
    3. 有两个特别大的文件里面是字符串,找出他们的交集https://blog.csdn.net/haitao111313/article/details/7425408
    4. 十亿个数找前10个最大的,小顶堆过一遍即可。他说如果要提高效率呢,我说可以分片做堆排序再进行归并即可。
    5. 一个数组乱序存储1100,将数组中某个数变为-1,怎么查找这个数以及该数的下标?要求时间复杂度O(n),空间复杂度O(1)
    6. 一个无序数组里面怎么查找出现次数大于数组长度一半的数?要求时间复杂度O(n),空间复杂度O(1)
    7. 有很大的数组, 找出其中最大的K个数 
    8. 链表倒数第n个节点.
    9. 两个链表,判断是否相交,找出相交的第一个点?https://www.cnblogs.com/dancingrain/p/3405197.html
    10. 25匹马,五条赛道。每条赛道跑一匹马,只能知道名次,不能知道速度,怎么找出前一二三名,用几次?
    11. 反转链表。
    12. 合并两个单调递增的链表。
    13. 连续数组的最大和。
    14. 和为S的两个数。http://blog.sina.com.cn/s/blog_afe2af380102uzbl.html
    15. 数组中重复的数字。
  3. 数据结构
    1. 说几个常用的数据结构。
    2. 红黑树、B树与B+树的底层。  3
    3. 索引采用b+树和HashMap的区别,使用场景,数据库为什么用b+树做索引,而不用HashMap
    4. b树有什么优势,b树和b+树的区别,b树和红黑树有什么区别。
    5. 数组和链表的区别?它们分别使用于什么场合?   2
  4. 十道海量数据处理面试题与十个方法大总结

https://blog.csdn.net/u012289441/article/details/45192775

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值