既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
大家好,我是纪宁。数据结构与算法,这个名字相信大家已经如雷贯耳,无比熟悉。可以说,数据结构与算法的掌握程度,决定了程序员水平的上限。
一、数据结构【熟练掌握】
数据结构(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、手写一道算法题
某学姐百度的面试:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!