面试之前查找相关文件,发现该公司对数据结构和编码能力比较看重,一次凉透的面试
自我介绍之后直接写代码,在石墨文档上共享(好像没有电脑版,只好在手机上作答),打电话才告诉我需要下载,所以先问了几个基础知识:
1、数组和链表区别
(1)数组是一块连续的内存空间,数组需要预留空间,在使用前要先申请占内存的大小,可能会浪费内存空间。
链表在内存中可以存在任何地方,不要求连续。 每一个数据都保存了下一个数据的内存地址
(2)数组:插入数据和删除数据效率低,插入数据时,这个位置后面的数据在内存中都要向后移。删除数据时,这个数据后面 的数据 都要往前移动。
链表:增加数据和删除数据很容易。修改之前结点的next指针
(3)数组:随机读取效率很高。因为数组是连续的,知道每一个数据的内存地址,可以直接找到给地址的数据。
链表:查找数据时效率低,因为不具有随机访问性,所以访问某个位置的数据都要从第一个数据开始访问,然后根据第一个 数据保存的下一个数据的地址找到第二个数据,以此类推。
(4)数组:不利于扩展,数组定义的空间不够时要重新定义数组。
链表:不指定大小,扩展方便。链表大小不用定义,数据随意增删。