【面试题分析】第八篇 百度IOS客户端面经(21 届秋招)|快手客户端开发面经(21 届秋招)

本文整理了21届秋招中百度和快手客户端开发面试的部分题目,涉及单例模式、ArrayList与LinkedList的区别、哈希表冲突解决、死锁原因与处理、内存泄露及其例子、volatile的用途,以及HTTP的工作流程。
摘要由CSDN通过智能技术生成

参考面经:百度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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值