数据结构与算法对程序员的重要性

文章目录 

一、数据结构【熟练掌握】

二、算法【大量练习】

三、数据结构与算法的重要性【现实】

四、大厂面试【困难】

五、如何学好数据结构与算法【规划】

1.代码量

2.博客的重要性

3.多思考,多画图

4.书籍推荐

六、总结【展望】


  大家好,我是纪宁。数据结构与算法,这个名字相信大家已经如雷贯耳,无比熟悉。可以说,数据结构与算法的掌握程度,决定了程序员水平的上限。

一、数据结构【熟练掌握】

  数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。在软件开发中,可能会需要格各式各样的管理数据的需求,这时候就需要各式各样的数据结构。最基本的数据结构有数组、链表、栈、队列、哈希表等。

  数据结构可以理解为:数据 + 结构数据是描述客观事物的符号,为程序操控,存储在计算机上,结构包括数据的逻辑结构和存储结构

  逻辑结构分为集合结构、线性结构、树形结构、图形结构;存储结构分为顺序性存储结构、链式存储结构、索引存储结构、散列(哈希)存储结构。

  总的来说,不同类型的数据结构就是在内存当中管理不同格式需求的数据,对这些数据进行增、删、查、改等操作

二、算法【大量练习】

  算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果

  众所周知,数据结构与算法是分不开的。对于数据结构中的数据,我们可能还会有些其他的需求,对数据进行一些处理。比如排序查找这些,甚至排序、查找中一些更高效的算法来达到我们期望的某些目的。

常见的算法总结:

  排序算法:希尔排序、直接插入排序、交换排序、快速排序、归并排序、计数排序、选择排序、堆排序
  搜索算法:哈希、回溯、递归、剪枝、红黑树、插值
  图论: 最短路径、最小生成树、网络流建模
  动态规划:背包问题、最长子序列、计数问题
  算法思维:二分法、贪心算法、分治法

三、数据结构与算法的重要性【现实】

  在找工作的过程中,每个人走校招一般都要经历1次笔试+3次面试的过程,笔试过了之后才能参加面试,在这种筛选形式下,笔试能力就显得尤为重要。

  一些中小厂在笔试的时候一般都是20-30道选择题+2道编程题的题型,而在一些大厂的笔试中,大多数都是以或者3-4道编程题+问答题的形式。并且无一例外,笔试中的难题都是在线OJ编程。并且绝大部分的答题都要使用数据结构与算法来完成。 ​​​​​网易在2021年的时候也开始改用笔试四道编程题的方式。

   腾讯也是5道编程题,这些应该都是大家熟悉的公司吧。

  可以看出,现在公司对学生代码能力的要求是越来越高了,大厂笔试中几乎全是算法题而且难度
大,中小长的笔试中才会有算法题。算法不仅笔试中考察,面试中面试官基本都会让现场写代码。而算法能力短期内无法快速提高了,至少需要持续半年以上算法训练积累,否则真正校招时笔试会很艰难,因此算法也要早早准备,应届生可以参加蓝桥杯、ACM、百度之星等算法竞赛,获不获奖不重要,要通过竞赛来提高自己的编程水平。

  看过我之前发过的在线OJ的规则介绍的兄弟应该知道,编程题真不好拿分!

四、大厂面试【困难】

  面试不简单!如果笔试过了却倒在了面试,就太亏了。下面列举了一些学长学姐在面大厂时,面试官经常会问的一些问题,供大家参考。

某学长CVTE面试:

1.怎么计算一个类到底实例化了多少对象?
2.如果还有一个派生类继承了这个类,那么如何计算这两个类,各自实例化了多少对象?
3.你了解联合体和结构体吗?
4.如何测试一个机器是大端还是小端?
5.你了解队列和栈吗?
6.怎么用两个栈实现一个队列
7.你使用过模版吗?
8.写一个比较两个数大小的模板函数。
9.你使用过容器吗?
10.判断两个链表是否相交。
11.Vector和数组的区别。
12.你在学校里做的最满意的一个项目是什么?简述一下这个项目

某学长腾讯的面试:

1、自我介绍
2、学习STL具体是怎么开展的?
3、如果一款产品给你怎么检测内存泄露?
4、进程间通信方式,共享内存是怎么实现的,会出现什么问题,怎么解决?
5、TCP为什么可靠?可靠是怎么保证的?为什么要三次握手?为什么三次握手就可以可靠?
6、Http数据分包问题;
7、Vector相关;
8、Hashmap相关;
9、红黑树的原理、时间复杂度等;
10、Memcpy和memmove的区别;
11、客户端给服务器发送数据,意图发送aaa,然后再发bbb,但是可能会出现aaabbb这种情况,如何处理?
12、游戏的邮件服务器中每天会有玩家频繁的创建邮件和删除邮件,海量数据、大小不一,会有哪些场景,怎么存储,邮件是怎么到内存的?
13、手写一道算法题

某学姐百度的面试:

1.手写五道题三道编程题,一道数据库,一道linux
2.数据库的题两问
3.算法了解的如何,插入排序编程
4.说一下IP,TCP,ARP
5.内核是什么
6.IP层主要功能
7.map和set底层
8.bootstrap的用法,html,html的全称
9.你觉得框架和库有啥区别

10.代码优化
11.哈希表
12.shell脚本
13.快速排序思想
14.递归是什么
15.分治是什么,与递归区别是什么
16.web平台是怎么做的
17.linux命令
18.了解些什么前沿的技术,英语怎么样,了解过什么英语的文献 

  这些面试问题中标紫的为数据结构与算法的内容,从此可以看出,数据结构与算法对未来找工作有多重要了吧。

五、如何学好数据结构与算法【规划】

1.代码量

  数据结构与算法相对于纯C、python来说,代码长度、代码难度都有了显著的提高,如果光看书学习不花时间写代码,那在校招中面对一大群卷王是非常吃亏的。所以千言万语,都不如有时间多刷一些算法题来的踏实。

2.博客的重要性

  博客对于学习的重要性,博主我深有体会。博客可以当做你自己的技术笔记,当那你写博客的时候,才会发现,哇,原来我还有这么多没理解透,为了博客内容正确,你会被迫去查阅资料学习,更加深了对知识的理解。其次,写博客还可以督促持续学习,我每写完一篇博客,都会有很大的成就感,充实感。

3.多思考,多画图

  我们面对数据结构中一些难以理解的操作与思想,往往不能望着天花板只靠脑子想,该动手的时候既要多动手,多画图,结合图来思考问题。

4.书籍推荐

数据结构与算法学习推荐:

罗永军老师的《算法竞赛》,算法思想简单明了,代码实现不拖泥带水。

程杰老师的《大话数据结构》,故事比较有意思,可以当做数据结构的入门书籍。

魏梦舒老师的《小灰的算法之旅》,通过虚拟的主人公小灰的心路历程,用漫画的形式讲述了算法和数据结构的基础知识、复杂多变的算法面试题目及算法的实际应用场景

数据结构刷题推荐:

《剑指offer》《程序员代码面试指南》 

  上面这两本书,在学习完数据结构与算法就可以去刷了,弄懂《剑指offer》90%的题目后,可以说,你已经达到了大厂程序员的门槛了,如果再想提高,就得去刷一下字节、华为、腾讯这些公司的笔试真题或者leetcode上的算法题了。

  平时刷题建议在牛客网、计蒜客等。没有一定代码量的基础,不推荐直接刷leetcod,得不偿失。

六、总结【展望】

  数据结构与算法是一门非常重要的课,值得大家花时间学习,但它也很难,拉开了程序员之间的差距。希望大家,也希望我能好好学习数据结构与算法,认真刷题,做到问心无愧。最后,希望大家在一两年后的今天,都能斩获自己心仪的offer,去到自己的梦中情厂!

猜你喜欢

转载自blog.csdn.net/zyb___/article/details/131884367