参考面经:百度IOS客户端面经(21 届秋招)
参考面经:快手客户端开发面经(21 届秋招)
第一题:单例模式
参考链接:【狂神说Java】JUC并发编程最新版通俗易懂
饿汉单例模式:
DCL懒汉单例模式:

第二题:ArrayList和LinkedList的区别
参考链接:Java 常见面试题之“Arraylist和Linkedlist的区别”
两者的相同点是:都实现了List接口
1、ArrayList是基于动态数组的,而LinkedList是基于链表的;
2、对于随机访问数组元素,ArrayList要优于LinkedList,因为LinkedList需要移动指针;
3、但是插入和删除操作也不能完全断定ArrayList要慢,因为ArrayList主要是在ArrayCopy耗时,LinkedList主要是找插入删除点耗时。
但是一般情况下LinkedList确实是要占优势一些的。
//ArrayList源码
//获取index位置的元素值
public E get(int index) {
rangeCheck(index); //首先判断index的范围是否合法
return elementData(index);
}
//将index位置的值设为element,并返回原来的值
public E set(int index, E element) {
rangeCheck(index);
E oldValue = elementData(index);
elementData[index] = element;
return oldValue;
}
//将element添加到ArrayList的指定位置
public void add(int index, E element) {
rangeCheckForAdd(index);
ensureCapacityInternal(size + 1); // Increments modCount!!
//将index以及index之后的数据复制到index+1的位置往后,即从index开始向后挪了一位
System.arraycopy(elementData, index, elementData, index + 1,
size

本文整理了21届秋招中百度和快手客户端开发面试的部分题目,涉及单例模式、ArrayList与LinkedList的区别、哈希表冲突解决、死锁原因与处理、内存泄露及其例子、volatile的用途,以及HTTP的工作流程。
最低0.47元/天 解锁文章
1002

被折叠的 条评论
为什么被折叠?



