2022微软苏州Software Engineer校招暑期实习生一面

写在前面

本人应聘的是Software Engineer岗位,更擅长的是前端。但是微软招聘大多考的是算法,今天面试的时候一道前端的题目都没问到emmm…问的全部都是跟数据结构相关的。

今晚得到通知面试不过,于是在网上搜了一下面试题的答案,整理成这篇文章供大家参考。自己答的就不写上来了…(感觉有点丢人现眼…


问答

1. 个人见解

自我介绍完后,面试官听我介绍大部分是前端的内容;然后就问我为什么想做前端、前后端的区别、移动端有没有接触过(面试官是做移动端的)等等问题

2. 数据结构

(1)你知道的数据结构有哪些?

(面试时一时间只想到链表和树emmm…)

:数据结构分为8类有:数组、栈、队列、链表、树、散列表、堆、图。

(2)说一说什么是链表,有哪几种链表?

:链表是物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,每个元素包含两个结点,一个是存储元素的数据域 (内存空间),另一个是指向下一个结点地址的指针域。根据指针的指向,链表能形成不同的结构,例如单链表,双向链表,循环链表等。

(3)说一说什么是单链表、双向链表?

:单链表只有一个指向下一结点的指针,也就是只能next,顾名思义,单链表只能单向读取
双链表除了有一个指向下一结点的指针外,还有一个指向前一结点的指针,可以通过prev()快速找到前一结点

(再附上循环链表的特点:表中最后一个结点的指针域指向头结点,整个链表形成一个环)

(3)说一说什么是树,你知道有哪些树?

:树是由n(n≥0)个有限节点组成的一个具有层次关系的集合。它具有以下特点:每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子树。

种类:

  • 无序树:树中任意节点的子结点之间没有顺序关系,这种树称为无序树,也称为自由树;
  • 有序树:树中任意节点的子结点之间有顺序关系,这种树称为有序树;
  • 二叉树:每个节点最多含有两个子树的树称为二叉树;
  • 满二叉树:叶节点除外的所有节点均含有两个子树的树被称为满二叉树;
  • 完全二叉树:除最后一层外,所有层都是满节点,且最后一层缺右边连续节点的二叉树称为完全二叉树;
  • 哈夫曼树(最优二叉树):带权路径最短的二叉树称为哈夫曼树或最优二叉树。

扩展:完全二叉树和满二叉树区别
1、完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。

扫描二维码关注公众号,回复: 14599832 查看本文章

2、对于满二叉树,除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树。而完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。


(本解答来自百度百科:树 (数据结构名词)


(4)有哪几种遍历树的方法?

二叉树的遍历方法
(图源:二叉树的四种遍历方式


(5)排序算法有哪些?


排序算法分类
(图源:十大经典排序算法(动图演示)

Coding

原题:234. 回文链表
题目1
题目2
题解可点进链接查找

面试官会问你的思路,时间、空间复杂度,你的算法能不能优化、怎么优化,优化后的时间复杂度是多少

总结

面试官问的问题还是很基础的,都是些以前数据结构课程学过的知识。coding也是选择了一道简单难度的题目。还是自己准备得不够、基础不牢、题刷太少了吧。还是得多努努力,不能天天摸鱼了啊…

猜你喜欢

转载自blog.csdn.net/weixin_45830447/article/details/123191375