1. java基础(实验室队友总结)
- JDK动态加载。
- 双亲委派类加载模型???https://www.cnblogs.com/wxd0108/p/6681618.html
该方法会首先调用 findLoadedClass()方法来检查该类是否已经被加载过;如果没有加载过的话,会调用父类加载器的 loadClass()方法来尝试加载该类;如果父类加载器无法加载该类的话,就调用 findClass()方法来查找该类。因此,为了保证类加载器都正确实现代理模式,在开发自己的类加载器时,最好不要覆写 loadClass()方法,而是覆写 findClass()方法。
- Java对象的回收方式,回收算法。 (4)
- JVM的调优参数?(-Xmn,-Xms,,,)
- 类加载器结构。https://blog.csdn.net/boyu peng/article/details/47951037
- CAS机制和锁。https://www.cnblogs.com/myopensource/p/8177074.html
- CMS和G1了解么,CMS解决什么问题,说一下回收的过程。CMS回收停顿了几次,为什么要停顿两次。 (3)
- 介绍一下java中的堆和栈? (2)
- Java栈什么时候会发生内存溢出,Java堆呢,说一种场景,我说集合类持有对象。
- int,Integer有什么区别
- 面向对象三大特点?你怎么理解多态?Java中是怎么实现多态的?
- Java里用过哪些集合框架。
- 设计模式知道哪些? 能手写代码吗? (4)
- 装饰器模式和代理模式有什么区别? (2)
- 匿名内部类是否可以继承类?是否可以实现接口?
- try,finally
- synchronized锁升级的过程,说了偏向锁到轻量级锁再到重量级锁,然后问我它们分别是怎么实现的,解决的是哪些问题,什么时候会发生锁升级。synchronized锁实现原理。
- AQS?Lock?https://blog.csdn.net/m_xiaoer/article/details/73459444
- 用过线程池吗?有那些参数? 有什么好处? (5)
- 线程和进程的区别。 (3)
- HashMap中的get()、put()方法是如何实现的? (4)
- HashMap可以用在哪些场景?
- ArrayList和LinkedList底层,怎么扩容的。 (3)
- List/ Set/ Map有什么区别?
- 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.
- 多线程用过吗?让举例子
- Synchronized和Lock? (6)
- synchronized和valatile关键字,有什么区别,如何理解valatile保证内存有序性。https://blog.csdn.net/liurenyou/article/details/72808274
- 知道current包下的其他类吗?
- 乐观锁如何保证线程安全?
- 用过线程池吗,如何用?
- Java中有两种异常
- TCP流程。我就讲了三次握手和四次挥手。然后问为什么有TIME_WAIT。 (3)
- Mysql数据库
- SQL优化。(3)
- 数据库隔离级别。 (2)
- 介绍一下索引?怎么使用索引的? (4)
- hash索引和b树索引的区别,适用场景。
- innodb中聚集索引,非聚集索引。
- 数据库怎么实现分库分表. https://blog.csdn.net/xlgen157387/article/details/53976153
- 了解哪些技术是牺牲了一致性来保证可用性的。
- 字段属性 varchar和char区别
- 优化慢查询的过程
- 算法
- 两个有序数组,数组中存在重复数字,合并成一个有序数组,去除重复数字。 (2)
- 10亿个数去重。
- 有两个特别大的文件里面是字符串,找出他们的交集。https://blog.csdn.net/haitao111313/article/details/7425408
- 十亿个数找前10个最大的,小顶堆过一遍即可。他说如果要提高效率呢,我说可以分片做堆排序再进行归并即可。
- 一个数组乱序存储1到100,将数组中某个数变为-1,怎么查找这个数以及该数的下标?要求时间复杂度O(n),空间复杂度O(1)
- 一个无序数组里面怎么查找出现次数大于数组长度一半的数?要求时间复杂度O(n),空间复杂度O(1)
- 有很大的数组, 找出其中最大的K个数 。
- 链表倒数第n个节点.
- 两个链表,判断是否相交,找出相交的第一个点?https://www.cnblogs.com/dancingrain/p/3405197.html
- 25匹马,五条赛道。每条赛道跑一匹马,只能知道名次,不能知道速度,怎么找出前一二三名,用几次?
- 反转链表。
- 合并两个单调递增的链表。
- 连续数组的最大和。
- 和为S的两个数。http://blog.sina.com.cn/s/blog_afe2af380102uzbl.html
- 数组中重复的数字。
- 数据结构
- 说几个常用的数据结构。
- 红黑树、B树与B+树的底层。 (3)
- 索引采用b+树和HashMap的区别,使用场景,数据库为什么用b+树做索引,而不用HashMap。
- b树有什么优势,b树和b+树的区别,b树和红黑树有什么区别。
- 数组和链表的区别?它们分别使用于什么场合? (2)
- 十道海量数据处理面试题与十个方法大总结
https://blog.csdn.net/u012289441/article/details/45192775