数据结构前言
- 1.什么是数据结构?
- 2.什么是算法?
- 3.数据结构和算法的重要性
- 4.如何学好数据结构和算法
- 5.数据结构和算法书籍及资料推荐
1. 什么是数据结构?
数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。
在做一些项目的时候,需要在内存当中把一些数据存储起来,在项目当中非常常见,
比如通讯录,通讯录中需要输入一些数据并且把这些数据给存储起来, 那么怎么把这些数据存储起来?
有常见的几个方式:
①.定长数组: 把长度固定 但是会限制固定长度
②.动态内存存储 又称数据结构中的顺序表存储 : 可以灵活设置空间
③.链表存储
④.哈希表或称红黑树 这个是后期比较复杂一些的数据结构 把数据存储起来后还要进行查找,统计次数
根据不同的场景可能需要不同的数据结构对数据进行存储,这些数据结构就要把这些数据在内存当中以某种形式进行存储管理起来,方便我们去获取数据和查找数据等等
数据结构本质上来说就是在内存中去管理数据,数据结构是学习任何语言方向任何方向中的一个重要学科
2.什么是算法?
算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果
接触过的算法:
①.排序
②.二分查找
算法通常是有分类的: 暴力求解,回溯,分支界定,贪心,动规
有时候要对一些数据进行处理,这时候就会用思想去解决,这个思想就是算法
其实就是把数据按照某种方式去分类去处理这种就叫做算法
3.数据结构和算法的重要性
在校园招聘的笔试中:
当前校园招聘笔试一般采用Online Judge形式, 一般都是20-30道选择题,3-4道编程题。
腾讯2017校招开发工程师笔试试卷 : 2017腾讯校招笔试真题_Java工程师、C++工程师_牛客网
在校园招聘的面试中:
某学姐百度的面试:
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.了解些什么前沿的技术,英语怎么样,了解过什么英语的文献
某学长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、写一道算法题
在未来的工作中:
4.如何学好数据结构和算法
4.1 死磕代码,磕成这样就可以了
4.2 注意画图和思考
5.数据结构和算法书籍及资料推荐
5.1数据结构学习得差不多了,推荐去把《剑指offffer》和《程序员代码面试指南》上的题做一遍
剑指offfferOJ : 牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网
5.2 刷完上面的内容,还可以去刷刷 Leetcode
LeetCode OJ : 题库 - 力扣 (LeetCode) 全球极客挚爱的技术成长平台