软件工程大一新生,想卷却找不到方向,恳请前辈指指路?

发布时间:
2023-08-24 12:42
阅读量:
18

说白了,就是想要一个过来人的学习路线呗?

1、学好线性代数和离散数学,因为追本溯源,计算机行业的本质就是数学,更是算法、机器学习,视觉处理这些研究方向的一个基础。

2、学好计算机底层相关的课程,包括数据结构、算法、操作系统、网络、数据库以及编译原理这些课程。它决定你将来是成为一名真正的工程师以及架构师,还是做一个普通的CRUD Boy。同时决定你是否能通过大厂的面试。可以去b站、中国大学Mooc、国外的coursera上学习。

3、确定未来技术方向,深入学习一门编程语言,可以是Java,Go,或者C或者C++。

关于学技术,有一句老话说的很好,叫做不怕万招会,只怕一招精,学精一门语言,不仅可以帮助你解决更深层次的问题,实现功能更强的项目,并且,对你学习其他的语言,也非常有帮助。你会发现,学精了一门语言,再学其他的就很容易了。

另外,你特别有针对性的去学习,从时间成本上来讲,肯定也是最节省的。

4、刷题刷题刷题,重要的事情说三遍,一个方向是刷算法题,需要你先学习数据结构与算法,之后你就可以多刷题,多刷题,多刷题了!

这件事情越早做越好,最好的开始时间节点是大二,大一把数据结构与算法学习学习,大二就开始刷题了,这个可以选择国内的力扣和牛客网,都是很不错的刷题网站!

据说,在牛客网刷题,可以遇到很多大厂的面试原题,加油了!

另外给大家提前敲响一个警钟,现在好多同学在秋招的时候,leetcode已经刷了500+题,甚至700题了。

算法的话,我觉得没有必要自己进行总结,毕竟现在网上优秀的算法学习资料太多了。

给大家推荐两个总结得超详细,解题方式非常巧妙的Leetcode刷题笔记,笔记的作者是:谷歌无人车部门技术大神高畅(changgyhub)和阿里霜神(halfrost)。

磨刀不误砍柴工,有了工具利器后,往往能达到事半功倍的效果。

下面分享给大家:


谷歌、阿里技术大神的Leetcode刷题笔记


第一个:谷歌大佬的刷题笔记

高畅现在是谷歌无人车部门的工程师,从事计算机视觉和机器学习方向。 他在美国卡内基梅隆大学攻读硕士学位时,为了准备秋招实习,几个月的时间,就刷了几百道题目。给

我的感觉是,如果早10年让我遇到这么经典的刷题笔记,那我一定能在各大互联网公司的面试里遇神杀神,遇佛杀佛。 原来算法还可以这样写!!!

让我们来看一下目录吧:

第二个:阿里霜神的刷题笔记(halfrost)

这个开源项目halfrost(简称霜神)去年刷算法题时整理出的 520 题,每道题都写了解题思路,全部都是 Golang 实现的,他刷题的目标是为了进Google工作。 这本书题目的代码都已经 beats 100% 了,为何要如此追求极致呢?

作者的想法是,优化到 beats 100% 才算是把这题做出感觉了。 暴力解法就算做出来了,但只 beats 了 5%,就像二分查找法的地方直接用个大循环一样。

而面试中,面试官对于暴力解法也不会满意,经常会来一句:“还有没有优化空间?” 再来个更优雅的,面试官也想不到的解法,绝对能加分。 看完这本笔记,在 Leetcode 上遇到中等难度的题基本不会卡顿了。

这是一本很用心的刷题类书籍,全书总共 1200 页,分编程技巧、线性表、字符串、栈队列、树、查找、排序、BFS、DFS、动态规划、贪心等。 截图如下:

希望高效刷题的同学,一定要好好看看。

另一个方向是刷八股文,现在行业极度内卷,工程师去参加面试,无论应聘的是大厂还是独角兽,一律各种八股文问得飞起,而且越问越底层,越问越往源码上靠,大有不把候选人问倒不罢休之势。

本人在去年看机会的时候,也从网上找遍了各式各类的八股文资料,但总觉得答案还不够准确,深度还有所欠缺,或是内容组织的逻辑性还不够清晰。

于是,我便自己动手,丰衣足食地自己总结了一套博采众家之长的Java八股文,那可真是字字斟酌,题题验证。

最终,本人凭借着这套八股文,拿到了字节跳动3-1和百度T7的offer。

现在,我“大公无私”地把它分享出来,希望更多的同学可以由此受益。


Java技术栈的经典八股文



5、学会使用GitHub,这个真的是一个巨大的资源包括,这个也号称是程序员最大的同性交友网站,我觉得,每一个计算机专业的人都应该知道它,会基本的使用它,在这上面,你可以找到很多有趣实用的项目供你学习!

这就是一个代码托管平台,简单说,就是全世界各地的程序员会把自己用代码写的东西上传上去,然后你就可以用了,一定要善加利用,好处多多,用了就忘不掉了!

6、多折腾项目,千万不要只做一个理论派,理论固然重要,但是离开了实战,理论的作用将大大折扣,所以身为一个计算机专业的学生,除了要学好学透必备的理论知识,一定要花时间多去折腾一些项目!

说的简单点,就是用你所学的知识去做一些东西出来,把理论知识落实到实战当中去,在实战中去不断的弥补巩固你的理论上知识,理论与实战一定是相互促进的!

这个至关重要,可以最大化的积累你的项目实战经验和编码能力,为你以后找工作提前做好铺垫,现在很多人到了该找工作了,就开始犯愁了,除了谁都不会之外,没什么项目可以往简历上写的!

7、参加有价值的竞赛,ACM(含金量最大)、GPLT、蓝桥杯、Kaggle、阿里天池、百度之星、中国大学生计算机设计大赛,这里面含金量最高的就是ACM,如果你想通过比赛获奖找到工作啥的,估计只有ACM有这个实力了,但是由此可见,其难度也是不低的!

参加这类计算机竞赛并取得一定不错的成绩,以后就可以为自己的简历加分很多,是你个人编程能力和经验的一个证明,尤其在考研方面加分更多,好处还是蛮多的,建议学有余力的同学多多尝试!

8、提前实习,尤其不准备考研,毕业就准备工作的!

实习能让你提前接触企业公司,包括环境、氛围、工作方式方法,并且实习一定要找那种大公司,大公司对实习生是有培养计划和要求的,对于表现优秀的会直接聘用你,省得再去哀鸿遍野的秋招卷了,难道不香吗?

小公司找实习生大部分就是便宜,教你一点东西,然后你之后的时间都会是重复的做这个东西,所以实习也要慎重。
9、去牛客上感受一下就业氛围,现在整体的就业环境越来越卷,早点儿去感受一下,省得到时候措手不及,而且也可以提前学习一下学长和学姐留下的宝贵经验,少走弯路。

10、锻炼身体,跟学习没有直接关系但有间接关系,并且比学习还要重要的事。


关于学习资料


数据结构:

强推《大话数据结构》,光看封面你就知道,这本书简单易学好上手,图解的方式更能让人接受和理解。

这本书以一个计算机教师教学为场景,讲解数据结构和相关算法的知识。通篇以一种趣味方式来叙述,大量引用了各种各样的生活知识来类比,并充分运用图形语言来体现抽象内容,对数据结构所涉及到的一些经典算法做到逐行分析、多算法比较。

与市场上的同类数据结构图书相比,本书内容趣味易读,算法讲解细致深刻,是一本非常适合自学的读物。

另外,我还强烈推荐浙大陈越老师的数据结构课,非常经典。很多看书非常难理解的概念,在陈姥姥和何老师的讲解下,都变得生动有趣。

数据结构_浙江大学




算法:

正如封面描述的那样,像小说一样的算法入门书,非常适合于初学者。

这本书示例丰富,图文并茂,以让人容易理解的方式阐释了算法,旨在帮助程序员在日常项目中更好地发挥算法的能量。书中的前三章将帮助你打下基础,带你学习二分查找、大O表示法、两种基本的数据结构以及递归等。

余下的篇幅将主要介绍应用广泛的算法,具体内容包括:面对具体问题时的解决技巧,比如,何时采用贪婪算法或动态规划;散列表的应用;图算法;K最近邻算法。

作为算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。

第4版具体给出了每位程序员应知应会的50个算法,提供了实际代码,而且这些 Java 代码实现采用了模块化的编程风格,读者可以方便地加以改造。

配套网站http://algs4.cs.princeton.edu提供了本书内容摘要以及相关代码、测试数据、编程练习、教学课件等资源。

另外,算法不能光靠看书,早早刷起来才是王道,刷得多了,自然无师自通。至于在哪儿刷,那当然是Leetcode和牛客网。

力扣牛客网在线编程_算法篇_全部题目


我的建议是,刷题不要都堆在临近秋招了集中刷,而是当做一种习惯,每天刷个两三道题,坚持半年后你会发现,循序渐进的感觉真好。


计算机组成原理


计算机组成原理计算机专业的核心基础课程,在课程体系当中起着承上启下的关键作用。

也是计算机硬件和软件之间的一座桥,既隔离了软件和硬件,也提供了让软件不必关心硬件,就可以直接操作硬件的接口。

换句话说,我们只需要对硬件原理性的理解,就可以用高级语言来写程序。不管是写操作系统和编译器这样的底层代码,还是写Web应用和手机APP这样的应用层代码。



视频推荐哈工大的:

计算机组成原理(唐朔飞)_哔哩哔哩_bilibili​www.bilibili.com/video/BV1WW411Q7PF​www.bilibili.com/video/BV1WW411Q7PF​www.bilibili.com/video/BV1WW411Q7PF​www.bilibili.com/video/BV1WW411Q7PF​www.bilibili.com/video/BV1WW411Q7PF



国外视频推荐课程选择cs61c,课程总时长约25小时

【中英文字幕】CS61C 2020(完结撒花❀)计算机组成原理 20200816_哔哩哔哩_bilibili​www.bilibili.com/video/BV1fC4y147iZ/



书籍推荐:深入理解计算机系统,csapp真的是计算机领域的圣经,不管你基础如何,我都会推荐你好好看一遍这本书,不知道它启发了多少计算机学子。如果不读这本书,我可能还是只会调参,crud复制粘贴,出了bug查博客的菜鸟,我会在日后给任何想学计算机的朋友推荐它。



计算机网络:


计算机网络微课堂


计算机网络微课堂


学习计算机网络,推荐 UP 主湖科大教书匠,全网第一,当之无愧,用心、负责。老师讲题的时候也会结合很多图片,讲得非常细致,总之有种想听不明白都难的感觉!

更好的是有考研 408 的难题的讲解,对于考研党也非常适用,除了课程内容外还有很多习题讲解视频,特别赞的一点是每天动态里都会更新一道考研题,播放量也非常的多。


一本很适合自学的书,讲解细致而富有条理,同时略去了很多细枝末节的信息,从而不至于让初学者无所适从。尤其是最后三章,无线网络、网络安全、多媒体网络,这三个主题在别的计算机网络书籍中涉及甚少,却都很具有实用价值。

而且中文翻译的质量挺高,必要的术语都留有英文,读起来不会有不流畅的感觉。


这本书对互联网基盘——HTTP协议进行了全面系统的介绍。作者由HTTP协议的发展历史娓娓道来,严谨细致地剖析了HTTP协议的结构,列举诸多常见通信场景及实战案例,最后延伸到Web安全、最新技术动向等方面。

特色为在讲解的同时,辅以大量生动形象的通信图例,更好地帮助读者深刻理解HTTP通信过程中客户端与服务器之间的交互情况。

读者可通过本书快速了解并掌握HTTP协议的基础,前端工程师分析抓包数据,后端工程师实现REST API、实现自己的HTTP服务器等过程中所需的HTTP相关知识点本书均有介绍。



操作系统


无论你学习前端还是后端,测试还是运维,都避免不了和操作系统打交道,只要你还在干这个行业。

但如果你是一个比较有追求的技术人,操作系统方向是非常有必要进行深入学习的。

比如C++中,可以使用new创建一个变量来存储数据,也可以通过malloc创建一块空间,但你知道它们的区别吗?

无论用什么操作符来操控程序,最终真正分配内存空间的其实还是操作系统,所以,想真正了解他们的区别,就必须深入操作系统内部原理。

这就是为什么,我们学习语言时比较简单,而真正深入起来,却很多地方不懂的原因。

刚开始学操作系统,如果你一上来就闷头啃500页的厚书,那用不了几分钟,你就会打哈欠连天。学不了一星期,你就从入门到放弃。


2020 南京大学 操作系统:设计与实现 (蒋炎岩)


操作系统:设计与实现 (蒋炎岩)




南大的课质量真的硬,蒋炎岩老师讲的是真滴好啊。老师讲课时用的课本是 Remzi 的 Operating Systems: Three Easy Pieces ,老师的每一节视频都比较长,一次肝完贼爽,老师把晦涩的东西讲的也非常的通俗易懂,豁然开朗。

很多同学都是慕名而来,看完这个也算上过南大的操作系统啦。
等把蒋老师的课程看完了,理解和消化透了,你就可以进阶看《操作系统导论》啦。


《操作系统导论》这本书非常适合初学者学习,作者讲解的思路非常清晰,从问题出发,一步步引导出解决方案,抽丝剥茧。


本书围绕3个主题元素展开讲解:虚拟化(virtualization)、并发(concurrency)和持久性(persistence)。对于这些概念的讨论,最终延伸到讨论操作系统所做的大多数重要事情。


本篇就先介绍到这里,硬核码字不易,如果觉得有收获,请您动动发财的小手,给库森学长点个赞吧。

END