【经验贴】数据结构与算法知识点汇总

前言

汇总贴:【回馈牛客】双非二本嵌入式秋招之路总结

在这部分分享里面,我只会涉及各部分的考点,但是不会把答案放出来,有一些我遇到的感觉不错的题也会放上来。这么做一方面是我自己也没法保证自己的答案是完全正确的(之前就有过看一个面经,然后里面的答案是错误的,在面试的时候吃过亏);另一方面是希望大家能够自己去查找,在理解的基础上记忆才能记得更牢,而且能对整个原理有一个认知,而不是完完全全靠背答案,这样效果很差,而且经不起面试官深入地问。这里把大部分的要点都总结出来了,就算一点一点去查资料也能在一周左右的时间内复习完。对于过于基础的知识就不提了,只提一些比较不容易注意到的点和比较重要的点。这里提到的知识点都是考察率非常高的,希望大家能把这些知识点弄懂,于此同时也要不断去看其他人的笔经面经,从里面找到自己不会的知识点,不断丰富自己的知识库。

对于嵌入式软件岗位来说,数据结构相对没有那么重要,但还是属于必考的知识点。对于嵌入式岗位,数据结构可以选择性地学习,不用全部都学会,毕竟准备的时间是有限的,当然有充足的时间的话,当然建议都学会了,因为对于顶级大厂来说,数据结构是考核的相对重点。

数据结构对于大多数不冲顶级大厂的同学来说,主要学链表、队列、堆栈就可以了,至于二叉树之类的,在我整个秋招的过程中,几乎没有被问到。可能像是华为这种公司会考到。

算法这部分建议去leetcode或者牛客网刷一下题,起码刷个20道简单题,熟练一下做题的方法,输入输出这些,对字符串的操作这些,因为后面笔试基本上都会考两题大题,基本上刷个20题,稍微总结一下,然后加上平时的积累就问题不大了,如果想进华为那些大厂,就要刷中等甚至困难的算法题了,这个看各位自己的取舍。

数据结构与算法这部分比较多的是考编程大题,所以大家不仅要知道解题的思路,还要会自己编码实现。

链表

  1. 数组和链表的优缺点有哪些?
  2. 链表的环
    1. 怎么判断链表有没有环?
    2. 如何知道环的长度?
    3. 如何找出环的连接点?
  3. 怎么翻转链表?
  4. 怎么删除链表中间某个节点?(只知道某个被删除节点,不知道其前一个结点地址的情况)
  5. 怎么删除单链表的重复节点?
  6. 怎么找出单链表倒数第k个节点?
  7. 怎么找出链表的中间节点?
  8. 两个单链表相交,如何求交点?
  9. 怎么判断一个链表是否回文链表?
  10. 怎么合并两个有序链表?
  11. 怎么实现双链表?
  12. 怎么实现循环链表?

二叉树

  1. 二叉树的遍历方法有哪些?
  2. 怎么求二叉树的深度?
  3. 怎么判断二叉树是否相等?
  4. 如何判断一棵树是平衡二叉树?
  5. 完全二叉树一共有n个节点,求叶子节点个数
  6. 若用n个权值构造一棵最优二叉树(哈夫曼树),则该二叉树的结点总数为

数组

  1. 给定一个整数数组,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
  2. 给一个数组和一个值val,原地移除所有数值等于val的元素,并返回移除后数组的新长度
  3. 合并两个有序数组
  4. 给定仅有小写字母组成的字符串数组A,返回列表中的每个字符串中都显示的全部字符组成的列表,一个字符出现多少次就要在最终答案中包含多少次
  5. 寻找数组的中心索引
  6. 给定一个非负整数数组A,A的所有偶数元素之后跟着所有奇数元素
  7. 给定一个未经排序的整数数组,找到最长且连续的递增序列

字符串

  1. 有效的括号(leetcode经典题)
  2. 翻转字符串
  3. 翻转字符串中的单词
  4. 判断是否回文字符串
  5. 判断字符串中的单词个数
  6. 库函数复现
    1. strcp
    2. strlen
    3. strcat

排序算法

  1. 8大排序算法,主要掌握冒泡排序、快速排序、插入排序的实现
  2. 了解8个排序算法的时间复杂度、空间复杂度、是否为稳定排序及其基本思想

递归

  1. 递归求1+2+……+n累加
  2. 递归求n!
  3. 递归实现斐波那契数列

其他算法

  1. 一根绳子分成若干份,计算若干份之积,使之成为最大值
  2. 杨辉三角
  3. 求一个数的阶乘末尾零的个数
  4. 输出n以内的素数
  5. 求数的二进制表示里面的1的个数
  6. 交换两个变量的值,不使用第三个变量
#高频知识点汇总##学习路径##春招##面经##笔经##校招##嵌入式工程师#
全部评论
🎉恭喜牛友成功参与 【创作激励计划】高频知识点汇总专场,并通过审核! ------------------- 创作激励计划5大主题专场等你来写,最高可领取500元京东卡和500元实物奖品! 👉快来参加吧:https://www.nowcoder.com/discuss/804743
点赞 回复 分享
发布于 2021-11-26 12:17

相关推荐

2025-11-21 03:09
已编辑
南昌大学 golang
bg普211本,走的golang后端方向。找实习经历:最近一个月投了一些日常,面了4场,都是一面挂。简历包装成分比较多,当时这个简历准备了两个星期,问AI解决什么问题用什么技术,跟其他技术对比优缺点在哪,等等。但是面试的时候一些基础的八股都答的模模糊糊,然后项目延伸的场景题一点不会。有点害怕面试,面前焦虑…本文可能带点碎碎念…省流就是因为每周面心态不行,不知道先学什么以及三天打鱼两天晒网…现在的主要问题,一个是只能依靠即时满足无法撑过枯燥的学习,另一个是难以调整心态,面试焦虑。个人背景:主包其实本来是大一开始学后端的,但是当时不知道合适的学习方法(学习路线和借助AI),也社恐不太敢问学长,走了很多弯路,也没有花很多时间在后端上面(按兴趣学的只有大二上学期写了opencamp的rustlings和learning-cxx,还有玩steam的图灵完备,剩余时间比较摆烂)。结果就是现在这鬼样子,只会写crud,差不多就是会gin gorm基础,会写注册登录和简单业务接口,写过几种项目结构和设计模式。缺乏自己延展的能力。计算机基础:也相当差,之前大二学的计网全忘光了,操作系统60飘过。虽然大一的时候打算法竞赛(也没什么成绩就是,省二等奖收集者),但到现在一年半没碰了,就只有dfs,并查集啥的一些很基础的题目随便写,hot100链表因为竞赛没练过相当不熟练。大二下的时候,数据库课看八股,又困又累,什么都没看进去,后面自然又是全忘光了。现在我虽然有了个概览,知道后端除了crud有缓存、微服务、分布式、消息队列等等东西,知道后端架构设计是要做权衡,性能、一致性、容灾,需要通过实验测出具体的数据来做决策,但是具体的方案不会,看基础知识是真看不进去。现在的主要问题,一个是只能依靠即时满足无法撑过枯燥的学习,另一个是难以调整心态。我高中以前一直是优等生,能够享受大部分题目都会的快感,能明确地有信心自己能做出来,解题过程需要进行推理,并且做完立刻就能得到正确反馈,其中的失败调整过程长度也在可接受范围内。(喜欢写rustlings一类的语言lab和玩《图灵完备》大概也是因为这个吧…)而现在的情景相当于我成了高三但是基础知识基本不会的状态,比我当年(会基础知识只是差做题)差多了。在这种情况下去面试也是相当痛苦,因为面试是不知道范围的。每次准备都不知道先看什么,学也学不进去。明明知道面试只是为了了解真实会问什么,但是还是很焦虑,拧巴心态。学长说去投简历面试实践是为了了解自己在哪里,别人在哪里,市场在哪里,但是我似乎还没有找到收敛的下限,只是一直失败…但是我也不能确定不面试就能学进去啊,因为我大二暑假是真的一点代码都不想碰,相当烦躁,八股也不想看。现在甚至连稍微花点时间的算法题(不能即时反馈的)都不想写了。还在纠结要不要整块时间搓项目压测试试,感觉会非常花时间。可能我项目管理也是一坨。
圆规学java:27届不着急,边投边学,克服恐惧感,你现在不敢面试,你为什么认为你暑期就勇敢了,你现在的进度其实还很早,我当时大三下才开始实习,我也很焦虑着急。永远没有准备好的时候,当下努力就是最好的加油!
点赞 评论 收藏
分享
评论
15
133
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务