2022届艰难秋招(已逝)算法总结!

举报
Studying-swz 发表于 2022/08/29 21:12:18 2022/08/29
【摘要】 1.算法题对于大厂秋招算法题是必须的,从投递简历开始(一般找内推),首先主要是笔试,笔试过了才会有后续,而笔试主要是常见的算法题(大厂为主),还有一些中厂会包含一些基础知识,包括计算机网络、操作系统、数据库等,百度正式批的笔试是在2021年9月7日,本人笔试没有答好,笔试成绩为题目的一半左右,鉴于后端开发投的人太多了,所以这个成绩没有进面试,但是给了个机会,面试安卓开发,也就尝试面试了一下...

1.算法题

对于大厂秋招算法题是必须的,从投递简历开始(一般找内推),首先主要是笔试,笔试过了才会有后续,而笔试主要是常见的算法题(大厂为主),还有一些中厂会包含一些基础知识,包括计算机网络、操作系统、数据库等,

  • 百度正式批的笔试是在2021年9月7日,本人笔试没有答好,笔试成绩为题目的一半左右,鉴于后端开发投的人太多了,所以这个成绩没有进面试,但是给了个机会,面试安卓开发,也就尝试面试了一下。因为面试官知道是后端调剂过去的,所以不会在安卓问题上进行刁难,主要是一些基础知识+算法,面试流程和提前批一样都是在一天内连续面完。
  • 网易音乐、网易有道在去年的笔试更为夸张,题目相对简单,做对了3.5/4,但是没有进入面试,竞争比较激烈。
  • 小红书笔试时间8月中旬,但是题目较难,本人也直接挂了。
  • 9月开始,是笔试的高峰期,所以会有一些冲突的公司,所以在投递的时候要安排好时间,可以舍弃一些练手的公司。

2.常见的算法题目总结(部分)

2.1 链表/双指针

  • 1:两数之和 II - 输入有序数组
  • 2:反转链表
  • 3:链表交点

这类问题主要是双指针解决,而双指针又可以分为快慢指针前后双指针正常双指针(一般有一定间距,同时从头开始)

2.2 栈/队列

  • 1:用两个栈实现队列
  • 2:用两个队列实现栈
  • 3:最小值栈

这类问题主要了解栈和队列的不同,对于java来说,有封装好的类,要懂得编码,另外单调栈这部分要注意。

2.3 二分查找

  • 1:大于给定元素的最小元素
  • 2:有序数组的 Single Element
  • 3:寻找旋转排序数组中的最小值

这类问题主要解决步骤:先排序,然后查找,需要注意的是边界问题。

2.4 回溯

思路:
回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。
回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法。

无返回值框架:返回所有结果

result = []
def backtrack(路径, 选择列表):
    if 满足结束条件:
        result.add(路径)
        return
    
    for 选择 in 选择列表:
        做选择
        backtrack(路径, 选择列表)
        撤销选择

有返回值框架:只要找到一个即可

result = []
def bool backtrack(路径, 选择列表):
    if 满足结束条件:
        return true
    
    for 选择 in 选择列表:
        做选择
        if(backtrack(路径, 选择列表)) return true
        撤销选择

无返回值框架,多组回溯:返回所有结果

result = []
def backtrack(路径, 选择列表):
	if 多组满足递归结束条件:
		return 
    if 满足结束条件:
        result.add(路径)
        backtrack(路径,选择列表-1);
        return
    
    for 选择 in 选择列表:
        做选择
        backtrack(路径, 选择列表)
        撤销选择

有返回值框架,多组回溯:只要找到一个即可

result = []
def bool backtrack(路径, 选择列表):
	if 多组满足递归结束条件:
		return true
    if 满足结束条件:
        return backtrack(路径,选择列表-1);
    
    for 选择 in 选择列表:
        做选择
        if(backtrack(路径, 选择列表)) return true
        撤销选择

注:  简单来说,递归就是不断调用自己,但是当递归中有了搜索、返回、不断剪枝的过程就成了回溯-可以看成dfs,可以看到回溯其实包含递归,回溯是一种算法的思想,而递归是一个算法结构。
image.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。