某公司实习面试记录

哎!面试之前被放两次鸽子,结果今天面试,面试完之后就凉凉了,伤心ing。面试流程记下:
1、自我介绍
自我介绍之后,面试官说在看不到的简历内容,应该是官网上面写的不够充分,但是我不知道为啥她没有下载pdf看,我的简历里面写的很清楚的。
2、问我有哪些数据结构
我当时回答的链表、队、栈。
下面把数据结构整理下,常见的数据结构有线性表、栈、队列、链表、树、哈希表、堆、图。先介绍下线性结构(数据元素之间存在一对一的前驱后继关系)、树形结构(除了根结点没有前驱,每个节点有且仅有一个前驱,节点的后继没有个数限制,一对多)、图结构(每个元素可以有多个前驱和后继,没有个数限制,多对多)。

  • 线性表
    由多个相同类型的数据元素组成的有序队列,每个元素只有一个前驱和一个后继。可以按照索引查询元素,内存分配连续。查询复杂度O(1),添加删除操作复杂度O(n),平均复杂度O(n/2)。(插入删除复杂度高是因为插入元素时后继元素全部后移,删除元素后继元素全部前移)
  • 队列
    队列是一种线性结构,在前端插入(入队),在后端取出(出队),也就是先进先出。入队和出队的复杂度都是O(1)。

  • 栈只能在栈顶进行插入和删除操作,先进后出(或后进先出)。
  • 链表
    链表是在存储单元上非连续的、非顺序的数据结构,数据的逻辑顺序通过链表的指针实现。每个节点一般包括两部分,存储元素的数据域和指向下一节点地址的指针域。添加删除时只用改变前后两个节点的指向地址,速度较快,添加删除的复杂度O(1)(这里不包括增加或删除时的查询时间)。缺点是查询复杂度O(n),并且需要存储大量的地址指针域

  • 树是典型的一对多结构,每个节点都有唯一的父节点(根结点无父节点),可以有多个子节点。
  • 哈希表
    哈希表是根据键对值进行访问的元素(键-值,key-value)。哈希表把键通过固定的hash算法映射到一个唯一的地址,查询速度很快。查询速度和hash算法有关,hash表为了避免hash冲突在空间利用率大于0.7-0.75左右时会再次进行内存分配;为了解决hash冲突,常见的使用开放地址法(遇到相同hash值向后再找地址)和拉链法(相同hash值存一个链表)进行数据存储。

  • 图是由有穷集合和边集合组成(多对多)。存储时可以利用邻接矩阵、邻接表等实现。
    邻接矩阵:在图里面用的比较多,一般是用一维数组存储所有的顶点,在二维数组中存储顶点之间的权值。
    邻接表:顶点用一个一维数组存储,图中每个顶点与所有的邻接点构成单链表。
    对比:①无向图的邻接矩阵是对称的,一行或者一列中所有元素的和即为顶点的度;有向图中一行表示入度(或出度),一列表示出度(或入度),具体根据自定义分析;②邻接表中无向图的同一条边会被存储两次,求顶点的度需要遍历链表节点个数;③邻接矩阵优点是可以快速判断两个节点是否有边,可以进行快速的插入、删除边,缺点在于如果边稀疏,耗费较多空间;邻接表优点节省空间,缺点关注顶点的度时需要遍历链表。

3、链表和队的底层数据存储的区别
链表存储是逻辑地址一个个映射,队列存储地址连续。(面试官说我表达的不专业,线性存储和非线性存储的问题)
4、字符串和数字存储的区别
数字存储以二进制进行存储,字符串由多个字符进行存储,每个字符占一个字节(ascii编码),如果是复杂字符可能用unicode编码。
5、字符串底层存储的数据结构是什么
字符串底层存储本质是数组,如果是定长字符串就用定长数组如果是不定长字符串,可以用堆进行分配内存(C++中malloc)。另外C/C++中字符串后面有一个停止符(\0)
6、问了一个简历里面比较老的项目(17年大四做的),并让我介绍专利的内容。
哎!这个专利是我毕业之后学弟写的,其实我真的对写的具体内容不太清楚,不过项目是我一个人做的。(估计这里减了很多分)
这里对两个专利都进行总结一下:
(这里就不方便写了)

7、编程题目
给你一份词汇表和一个字母表,让你计算可以从词汇能否被字母表里面的字母全部拼写出来(拼每个单词时,字母表中的字母不能重复使用),最后返回能拼写的所有的单词的长度之和。
leetcode传送

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值