【第一章:C++后台开发学习路线】第3节:算法刷题提升路线

前言

    相信很多人和我一样,都是非科班出身(计科/软院),没有在最开始的时候接触最基础的算法课程和训练。我一开始也很苦恼,在硕士阶段才来弥补,一方面面对科研的压力平时时间很紧迫,另一方面不知道有哪些合适的资源可以去提升自己,往往浪费很多时间在找书找课上。网上的公开课很多很多,算法教程又是一大堆。同时网上刷题的OJ那么多,题目又是海量,到底该怎么入手?本文就将从我个人的痛点切入,介绍下我认为的比较好的算法学习策略,在本节最后我也对我秋招遇到的算法题做了一个总结。

痛点分析

个人总结下来,初期学习算法有以下几个痛点:

1.编程能力不足。初期由于编程能力不足会导致眼高手低,看着都会,写起来很费劲。

2.过于心急。很多同学在早期就想进入刷题阶段,算法基础还不扎实,题目类型都不熟悉,匆忙刷题只会打击自己的自信心。

3.效率低下。比如一开始就去看《算法导论》这样的大而全的书,会导致时间成本太高,效率很低。

4.选择困难。市面上太多资源,算法课,OJ,如何选择成为初期最大的困难。

5.定位错误。应对秋招的算法要求和算法竞赛的要求是不一样的,很多人缺乏明确的定位。

6.缺乏策略。很多同学因为没有策略,花了很多时间但是算法能力提升缓慢。不能用战术上的勤奋来掩盖战略上的懒惰。

算法能力指的是什么

算法能力不是指算法工程师的能力,算法能力是一项通用的基础能力,指的是对于基本算法和数据结构的了解程度和解决通用算法问题的编程能力。

所以:算法能力 = 数据结构 + 基础算法 + 编程能力 + 逻辑思维。

数据结构:对基本数据结构的设计思路,使用场景,性能特点的熟悉程度。

基础算法:对基础算法的设计思路,使用场景,复杂度的了解程度。

编程能力:代码编写,边界检查,调试能力,优化能力。

逻辑思维:题意理解,过程推导,解法分析,性能计算。

应对春招实习,秋招面试,应该具备什么算法水平

算法能力是比较容易量化的,一般来说对于大部分人,你能够解决LeetCode上全部easy题和大部分中等难度题,就可以应对大部分国内互联网公司的应试要求,再细化来说就是LeetCode 400-500题量水平。

如今国内互联网公司越来越喜欢考察应届生算法知识,体现在这几个方面:

1.增加手写算法题数目;

2.手写算法题的结果直接决定面试是否通过;

3.算法问题深度增加;

以我个人实际经历来说,大厂的面试尤其会在第2点体现更加突出。就阿里来说,阿里的技术面试会在正式开始前,面试官会通过邮件发一道算法题,只有应聘者在规定时间内完成手写算法题,才会开始后续面试内容。这意味着,算法题将成为第一道门槛。目前我面试过的公司当中算法比重较高的几家公司如下:字节跳动,依图,商汤,小马智行等等。

面试算法题一般不会很难,和算法竞赛的要求差别很大,如果简历上没有出现ACM等算法比赛获奖经历,面试官是不会特意为难。面试考察的是算法的基础知识和编程基本功,题目一般简短明确,容易理解,甚至是往年的原题,但是往往隐含边界分析,bug排查,所以需要谨慎小心。

常考算法知识点

  • 排序:大部分要求能手写,并分析时间空间复杂度,以及稳定性分析
    • 快速排序,插入排序,冒泡排序,选择排序,堆排序,归并排序,基数排序
  • 树:需要了解结构,遍历方式,前中后序遍历
    • 二叉树,红黑树,B树,B+树,Trie 树,胜者树,败者树
  • 图:DFS,BFS,Dijkstra
    • 拓扑排序;并查集;最短路径;最小生成树
  • 散列表:实现原理,扩容,效率
  • 字符串:KMP,Manacher,
  • 数组、链表、二叉树、队列、栈的各种操作(性能,场景)
  • 其他算法:2分搜

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

<p> 《收割BAT:C++校招学习路线总结》,专刊共计17节。专刊分为五大主要内容,包括后台开发学习路线、简历制作,面试技巧、BAT等名企面试真题解析和工作学习常用工具。本专刊将介绍我在技术成长过程当中的经验,通关BAT的面试技巧,并结合亲身经历的面试真题由浅入深的讲解后台开发方向的重点问题,让你们的求职之路更加顺畅。 本专刊购买后即可解锁所有章节,故不可以退换哦~ </p> <p> <br /> </p>

全部评论
很好
点赞 回复 分享
发布于 2020-03-11 14:29

相关推荐

一tiao酸菜鱼:秋招还没正式开始呢,就准备有结果了。。。。?
点赞 评论 收藏
分享
评论
8
9
分享

创作者周榜

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