2020年面试整理

2019年12月份,在公司经历了一些事后,下定决心准备跳槽,目标XXX。直到2020年11月中旬拿到offer,个中滋味,唯有自知。下面把这一年看的资料,视频链接和经历记录下来。

需要推荐或者模拟面试,请加微信号:15850052010
我的微信号

目录:

– 推荐资源
– 刷题时间线
– 面试过程
– 面试建议
– 数据结构路线图

推荐资源

1、数据结构与算法分析 C语言描述 [美] 马克·艾伦·维斯(Mark,Allen,Weiss) 著,冯舜玺译 译 机械工业出版社 华章图书
这本书比较全面讲解了各种基础数据结构,还扩展开了很多复杂数据结构,比如AVL树,伸展树,左式堆,二项队列。
每一章看着内容不多,但个个都是经典,比如第8章就是union find。第10章大概讲解了几种经典的算法,贪婪,分治,DP,回溯,是一本值得反复看的数据结构和算法书。

2、算法(第4版)(图灵出品) [美] Robert Sedgewick,[美] Kevin Wayne 著,谢路云 译 人民邮电出版社
另一本十分经典的数据结构和算法的入门书籍,虽然很厚,但由于有插图,有书后习题(跳过),所以内容其实不多,由浅入深讲解了数据结构的各种API,并形象得将数据结构画了出来,比如搜索二叉树的find_floor, find_ceiling等api。及字符串排序的MSD,LSD排序,处处都闪耀着
这么多年前人总结的智慧。
这本书一个人啃会很困难,推荐是先看一章讲解的视频,然后再看书复习一遍,这样进度就会很快。
https://www.bilibili.com/video/BV1K4411b7jM?from=search&seid=3902990027078030614
https://www.bilibili.com/video/BV134411L7Um?from=search&seid=3902990027078030614

3、算法导论 原书第3版 [美] 科尔曼 著 华章图书
算法导论侧重算法即各种时间复杂度,空间复杂度的计算。说实话我并没有看这本书,我是直接看了MIT的算法导论公开课,并认真将每一课的内容笔记下来,效果和看一本书差不多。对各种时间复杂度O(nlogn), O(n^2),O(n)的推导方式有了了解,特别是多核的时间复杂度计算,及新技术对算法优化提升的帮助,比如cache,分布式计算等。一次没有看懂可以反复观看,能加深理解。
直接贴上bilibili的链接:
https://www.bilibili.com/video/BV1ot411a7Lt?from=search&seid=5037764187974363628

4、labulaodng的算法小抄
Leetcode上的热门up主,貌似是一个刚毕业的研究生,将leetcode上的算法做了一定的总结。强烈推荐。我是每一章都反复咀嚼,对于数据结构和算法的熟练掌握特别有帮助,对算法的理解能提高一个台阶。

5、操作系统:精髓与设计原理(原书第6版) 斯托林斯(William Stallings) 著,陈向群,陈渝 译 机械工业出版社 华章图书
这本书并没有针对特定的操作系统,书中能看到windows和linux的影子。这本书比较详细介绍了操作系统的各个组件,所以就当成专业名词的解释,是一本不错的工具书,有空翻两下,总会有很多收获。

6、编程珠玑 [美] Jon Bentley 著
程序员必看的书之一,看完之前的数据结构,你在看这本书,就会理解数据结构使用的场合,优劣等。书里还详细介绍了程序员需要考虑的常见知识,代码调优,性能分析,节省空间等。数据结构部分不是重点,技术的各种使用场景是这本书的特点。

7、算法笔记 刁瑞,谢妍 著
我主要是冲着作者是ACMer,想看看专业算法工程师的知识点,但内容干涩难懂,代码是sudo code,比较难消化。大概讲第2章和第3章的动态规划部分看完,就束之高阁了。
在这里提这本书,就是想感慨一下计算机经典的书籍全是美国高校的教授写得。中美的差距,在基础理论这一块差距还是很大。

8、计算机科学丛书·云计算:概念、技术与架构 [美] Thomas ERL,[英] Zaigham Mahmood,[巴西] Ricardo Puttini 著,龚奕利,贺莲,胡创 译 机械工业出版社 华章图书
做为分布式系统,云计算的入门书籍,讲解了基础概念。没事就翻翻。

9、网易公开课上也有很多MIT的CS课程,多看一些,对英语听力也有帮助。

10、《背包9讲》
ACM大神的动态规划经典,我只看了第一第二讲,能足以解决Leetcode上大部分的0-1问题。

刷题时间线

打基础期:

2019年12月份~2020年1月份,看完了书籍1,然后开始做了一些leetcode题目,发现遇到题目很难想出来用什么数据结构或者算法来解决。
于是就重新看书籍1,书籍2,并同时看书籍2的视频。看完一章,到leetcode上针对这个数据结构做5~10题,数据结构也直接从0开始写,加深印象。知乎上也有很多刷leetcode的经验分享,可以多看一下,为下一步的刷题找好方向。
到2020年5月份,书1,书2和视频看完,leetcode题目大概在200题。数据结构和算法都掌握差不多了。下面开始随机刷题,即并不针对某一种题型,而是直接按顺序做简单和中等的题目。期间遇到了很多巧妙的解题技巧,各种数据结构和算法的灵活运用。
期间开始刷书籍3,并在看评论区的时候看到了书籍4,开始边做题边刷书籍3的视频和书籍4的电子版。这个过程持续到了2020年8月份。

瓶颈期:

2020年8月份开始,明显感觉题目会出现2种情况,要么题目看一眼就知道怎么做,并很快解决,要么题目一直无法想到解决方法。
这是由于前者的题目可以直接用算法套用,便可以从之前做题的经验里找到相似题目。而后者多是新题,新的数据结构,必须静下心仔细把解法吃透,从暴力解法,逐步优化到O(nlogn),O(n)等。这一段时间会经历很多挫折感,会有点迷茫,遇到比较难一点的,会有要放弃的感觉。这时需要不断给自己打气,灌鸡汤。坚持下去,以达到量变引起质变。
这段时间可以刷刷bilibili上很多leetcode up主的刷题讲解视频,可以加快新题型的学习。

冲刺和复习期:

2020年10月份左右,收到消息目标部门增加了hire count,预计2个月内就要去面试。这时开始做2件事:
1、出去找别的公司锻炼面试,找人模拟面试,模拟线上做题的过程。
经历真实的面试,可以整理自己这几年的工作内容,锻炼介绍自己的思路。可以发现一般面试官会常问的几个题目。
发现自己在介绍,问答中存在问题,比如思路不清晰,工作内容,项目经历不清晰等。
找人模拟线上做题的过程,对方随机在1000开外找题目,你看到题目后,把思路先讲解给对方听,然后直接在记事本里做题目。目标是10~20分钟能写出编译能过,corner case都考虑到的perfect code。
2、将之前做过的简单和中等的题目,全部按照类别整理成脑图。并在每个题目后面用1-2句话描述解题思路。便于复习。
脑图的好处在于复盘,整理,重新消化。避免了贪快,贪多,导致前面的题目又忘掉的情况。
百度脑图链接:
http://naotu.baidu.com/file/95c3d4021d64acd2dbdd29e273a348dc?token=fe237079bc46383f

面试过程

在2020年11月联系HR以后,第一天进行了1轮电话面试,通过后,进行了4轮的技术面试。
第一面,英文自我介绍,然后用英文回答了一些技术问题。
编程题是《XXX》,大概思考了一下,就和面试官把题目思路说了一遍,20分钟代码写完。有一个case没考虑到,在面试官指点下写完。
第二面,中文自我介绍,项目经历。
编程题是《XXX》,10分钟完成,第二题《XXX》,10分钟完成。
第三面,中文自我介绍,工作中最有挑战的工作和问题,介绍了项目经历。英文回答了一题技术问题。
编程题《XXX》,10分钟完成。
第四面,中文自我介绍,工作中最有挑战的工作和问题,介绍了项目经历。英文回答了一题技术问题。
设计题《XXX》,《XXX》
第五面,Boss面试,比较友好得聊了公司,部门的未来发展。自我介绍了工作经历,项目经历,英文回答了一些技术问题。
编程题《XXX》,大概15分钟完成。

面试准备

1、准备中文和英文的简历。
2、准备一份中英文的面试讲稿:
自我介绍,工作内容,能体现自身技术能力的案例。
工作内容,建议先列框架,工作的职责有哪些方面,然后每个方面再展开,有哪些内容,每个内容再具1-2个具体的技术例子。
这样避免了项目,工作内容介绍时,出现大而虚的尴尬,可大可小,收放自如。不然面试官看到工作内容太宽泛无法深入提出问题。
3、需要准备的问题:
1、最有成就感的bugfix。
2、最有挑战的问题,怎么思考,怎么处理的。
3、自己完整参与的项目,leader级别的话,需要将整个项目的过程详细讲清楚。

数据结构路线图

先从连续内存的数据结构:
1、数组
2、字符串
3、链表
4、栈
5、队列
6、哈希
7、堆
8、并查集
然后是连续内存的算法:
1、排序:希尔排序,快速排序,归并排序,计数排序。
需要知道每个排序的特点,时间复杂度(保证,最差,随机),空间复杂度,是否稳定等。
2、查找:二分法,双指针,快速选择
然后是树状数据结构:
1、二叉树
2、搜索二叉树
3、字典树
4、线段树
其他N叉树,红黑树,伸展树,了解了解就好,不需要能写出来。

然后是进阶的算法:
1、遍历:广度,深度,双端广度
2、贪心,分治,回溯,FSM。

最后是比较难的动态规划,分一维DP,二维DP,0-1背包这些。
重点是能推导出动态规划的状态转移方程,有了方程,代码就完成一半了。
在这里插入图片描述

  • 34
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值