Bootstrap

数据结构初阶--前言

1.什么是数据结构?

数据结构(Data Structure)是 计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。

😒上面这是来自书上的定义,对新手来说,读起来都不像人话。有的人直接原地爆炸,看不懂。那么以下咱们说直白点:

  • 在写程序的时候,为了实现一些项目,需要在内存中把我们写的数据存储起来。这个就是数据结构

  • 比如,在我们写通讯录的时候,我们要把每个人的信息(电话号码,家庭地址...)存储起来。方便之后去查看

  • 那我们怎么把这些数据所包含的信息存储起来呢?

  • 数组、链表、树、哈希表······存储形式,每个存储方式都有它的优缺点

  • 比如数组的优点是方便,它的缺点是分动态和静态,你用静态数组初始化大小为500,但是你存着存着超过了500,那你之后写的数据就存不进去了

  • 故我们需要把这些数据结构了解一遍,在我们实现项目时才知道选什么合适,因此数据结构需要在我们后面的学习中深入理解。

2.什么是算法?

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

咱也说直白点:

  • 算法有排序、查找、去重等多种算法

  • 排序:淘宝买手机(想看最贵的或者好评度高的或者销量多的,我们进行排序)

  • 查找:快递,我们输入手机号来查找我的快递发到哪了

  • 去重:删除重复的数据

  • 现实中我们需要很多很多的算法,还有更高级的算法,比如说推荐算法,该算法不是那么轻易就能实现的,抖音经常看小姐姐😍就推荐小姐姐的视频,经常看篮球就推荐篮球的视频。

通俗来讲算法就是解决问题的方法

3.数据结构和算法的重要性

数据结构和算法在未来的笔试面试以及程序员的发展非常重要

3.1在校园招聘的笔试中

当前校园招聘笔试一般采用Online Judge形式, 一般都是20-30道选择题,3-4道编程题。

牛客网可以做公司真题

大公司:5道左右算法题

中小公司:选择题(20-30个)+编程题(3个左右)

例题链接:https://www.nowcoder.com/test/6393508/summary

可以看出大公司对大家的要求更高了(更侧重你的代码能力),解决算法就必须用到数据结构,有些数据结构用到算法,它们是不分家的,所以经常说数据结构和算法。

3.2在校园招聘的面试中

注:加粗的是数据结构和算法相关的知识

某学长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.了解些什么前沿的技术,英语怎么样,了解过什么英语的文献

3.3在未来的工作中:

https://www.zhihu.com/question/36579347/answer/217323640

https://www.zhihu.com/question/289795606/answer/485134867

注:以后的发展对代码要求很高,学习数据结构和算法就可以提高我们的代码能力,一定要重视在我们找工作和考研,数据结构和算法很重要,我们要学扎实,不要半罐子水晃荡,而是放平心态,认真学

4.如何学好数据结构和算法

4.1 死磕代码,磕成这样就可以了

4.2 注意画图和思考

5.数据结构和算法书籍及资料推荐

注:其实学这个数据结构初阶,不需要看书的,跟着课程走就可以了。课后作业都做了,其次再有时间,好好总结一下博客,维护一下gitee

5.1数据结构初阶学习得差不多了,推荐大家都去把《剑指offer》和《程序员代码面试指南》上的题做一遍

https://www.nowcoder.com/ta/coding-interviews?page=1

5.2 刷完上面的内容,我们还可以去刷刷 Leetcode

https://leetcode-cn.com/problemset/all/

;