欢迎来到光光的奇妙冒险,我是你们的煎饼光子老师。
今天是我们的第五期笔试面试题总结。
C#部分:
1、以上代码,谁的效率更高?为什么?
答案:
代码2的效率更高
因为List的本质是数组,在初始化时,如果不默认为其指明分配多少容量,它会不断扩容
扩容会带来效率的降低和垃圾的产生
效率的降低:从旧数组到新数组的搬家
垃圾的产生:每次扩容时,就数组就变成了垃圾
2、数组和链表的区别是什么?
答案:
1.存储结构不同
数组是顺序存储结构,在内存中是连续存储的
链表是链式存储结构,在内存中是非连续存储的
2.访问效率不同
数组由于是顺序存储,通过下标访问,访问效率高
链表由于是非连续存储,我们想要获取其中某一元素,需要从头或尾遍历,效率低
3.插入、删除效率不同
数组由于是顺序存储,在插入和删除时,需要整体移动数组中的大部分元素,效率低
链表由于是链式存储,在插入和删除时,效率高
4.越界问题
数组由于是顺序存储,声明时容量是固定的,如果不处理扩容逻辑,存在越界风险
链表由于是链式存储,无越界风险
3、