后端开发面试自我介绍_字节跳动后端开发实习生面试准备+面经

emmm,3月14日下午上完课回去路上接到了字节跳动的电话,邀请我于第二天(3.15)下午四点进行视频面试。说实话我激动中带了点慌,赶紧准备了一波,我知道其对于数据结构和算法的要求是很高的,在这块儿我确实就只想掌握了点皮毛,现在只有一天时间准备这部分毕竟投入产出比太低,于是还是准备简历上的内容,然后把排序算法复习一遍。

晚上大伙儿一起,组织起来给我模拟面了一下,我说的很直(一个问题就只回答问题本身而已,这样根本聊不下去),而且很多知识都模糊了。回去后就好好整合了一下,在面试前准备了以下内容。

以下主要是根据我的简历准备的内容!!!

1.介绍下ArrayList

ArrayList是一种数组队列,其底层是基于数组的,但是是一种动态数组。

ArrayList中有两个重要对象,一个是 elementdate ,保存了添加到ArrayList里的元素。当使用ArrayList里的带参数的构造方法时,可以对其进行初始长度设置,如果直接使用不带参数的构造方法,则默认初始长度为10;另一个是size,即实际长度。

其继承了AbstractList,实现了List,能对其中的元素进行增删查改等操作。在这里经常与LinkedList作比较。

LinkedList是基于循环双向链表的。该链表是由多项的表项连接而成,一个表项包括前驱表、元素内容和后驱表。在一个LinkList里会有一个header,其前驱表项是链表的最后一个元素,后驱表项是第一个元素。

  • A基于数组,数组的长度是固定的,故进行插入或者是删除一个元素时是比较麻烦的,因为其在插入或者删除某一位时,该位及以后都需要进行移位替换。
  • L基于链表,其对插入和删除某一元素就相对来说很简单,但是其对于查找操作则很麻烦,需要进行链表的遍历,性能不好。

ArrayList与Vector很相似,但是ArrayList不是线程安全的,因此,ArrayList较适合用于单线程模式,而多线程情况下可用vector。

其次,还可以看下ArrayList的遍历,我有试了一下分别是用 1、随机访问,通过索引值去遍历 2 、使用迭代器遍历 3、for循环 。最终分别用时3ms,8ms,5ms. 故用索引效率最高,迭代器则较差。

1.索引值遍历
Integer value = null;
int size = list.size();
for (int i=0; i<size; i++) {
    value = (Integer)list.get(i);        
}

2.迭代器遍历(iterator)
Integer value = null;
Iterator iter = list.iterator();
while (iter.hasNext()) {
    value = (Integer)iter.next();
}

3.for循环
Integer va
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值