1.什么是数据结构?
数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合
数据结构和数据库是有区别的:
- 数据结构:在内存中管理数据
- 数据库:在磁盘中管理数据
内存和磁盘的区别(相对而言):
- 内存带电存储(临时存储),读取速度快
- 磁盘不带电存储(永久存储),读取速度慢
2.什么是算法?
算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果
3.数据结构和算法的重要性
在校园招聘的笔试中:
当前校园招聘笔试一般采用Online Judge形式, 一般都是20-30道选择题,3-4道编程题。
2017腾讯校招笔试真题_Java工程师、C++工程师_牛客网 (nowcoder.com)
在校园招聘的面试中:
某应届生CVTE面试:
- 怎么计算一个类到底实例化了多少对象?
- 如果还有一个派生类继承了这个类,那么如何计算这两个类,各自实例化了多少对象?
- 你了解联合体和结构体吗?
- 如何测试一个机器是大端还是小端?
- 你了解队列和栈吗?
- 怎么用两个栈实现一个队列。
- 你使用过模版吗?
- 写一个比较两个数大小的模板函数。
- 你使用过容器吗?
- 判断两个链表是否相交。
- Vector和数组的区别。
- 你在学校里做的最满意的一个项目是什么?简述一下这个项目。
某应届生腾讯的面试:
- 自我介绍
- 学习STL具体是怎么开展的?
- 如果一款产品给你怎么检测内存泄露?
- 进程间通信方式,共享内存是怎么实现的,会出现什么问题,怎么解决?
- TCP为什么是可靠的?可靠是怎么保证的?为什么要三次握手?为什么三次握手就可以可靠?
- Http数据分包问题;
- Vector相关;
- Hashmap相关;
- 红黑树的原理、时间复杂度等;
- Memcpy和memmove的区别;
- 客户端给服务器发送数据,意图发送aaa,然后再发bbb,但是可能会出现aaabbb这种情况,如何处理?
- 游戏的邮件服务器中每天会有玩家频繁的创建邮件和删除邮件,海量数据、大小不一,会有哪些场景, 怎么存储,邮件是怎么到内存的?
- 写一道算法题
某应届生百度的面试:
- 手写五道题,三道编程题,一道数据库,一道linux
- 数据库的题两问
- 算法了解的如何,插入排序编程
- 说一下IP,TCP,ARP
- 内核是什么
- IP层主要功能
- map和set底层
- bootstrap的用法,html,html的全称
- 你觉得框架和库有啥区别
- 代码优化
- 哈希表
- shell脚本
- 快速排序思想
- 递归是什么
- 分治是什么,与递归区别是什么
- web平台是怎么做的
- linux命令
- 了解些什么前沿的技术,英语怎么样,了解过什么英语的文献
在未来的工作中:
学好算法对一个程序员来说是必须的吗?如果是,至少应该学到哪种程度? - 知乎 (zhihu.com)
4.如何学好数据结构和算法
- 死磕代码
- 注意画图和思考