目录
前言
后端学习方法
1,层次
2,体系
3,算法和数据结构
4,总结
前端学习方法
基础
求职中如何弥补学历差距?
项目经历怎么准备?
简历如何写?
0基础可以跟项目吗
主修Java或者C++能不能参加青训营?
大一下暑期计划
主要总结下短短1个小时直播中接受到的知识,由于不允许录播和转载,所以我会凭记忆同时借助Google,百度,掘金,CSDN,GPT4.0等工具,进行完善和解析
借助的工具如下
水平有限,权当大一下暑假开始前的路线修正和知识拓展
首先,是第六届青训营报名的网址前后端免费学 | 第六届字节跳动青训营报名啦 - 掘金 (juejin.cn)
其次,里面分前端和后端方向,都会有完整的路线和录播直播视频
前端就是html, css, js三大板块...
后端就是Go语言加上....
首先说下,最近一年,我的主要精力肯定都是给C++,408,数据库,竞赛和项目(面试考察内容)(408包括 数据结构与算法,计网,计组,操作系统)
为什么还参加和C++没什么关系的后端训练营呢(后端学Go嘛),因为里面讲的大多数东西,其实换一门语言,不管是Java,C++还是Rust等等,都是换汤不换药的,一样能实现,意思是,技能都是通用的,后端,从服务端出发,就是应用层,框架层,存储层等等,无非是语法和性能的“细微”差异
所以我参加第六届青训营的目的,还是借这个平台,完善一下做项目的通用知识,还有拓展知识面的目的,当然,如果时间充足,或者自己足够自律上进,也是可以挤出时间另外学Go的,甚至说,你最后不一定要用Go来实现这个组队项目(一般3~4人最好),你甚至可以用C++来实现,但是Go肯定比C++简单一些。。
下面,我会根据直播中字节在职前辈,资深HR们的真知灼见,加上自己的适当扩展,来解答一些疑惑,为今后学习和发展指明一点方向
从后端出发,比如服务端,分为几个层次
1,应用层,用自己的代码去开发和实现的一些逻辑
2,框架层,比如Java对应Spring
3,存储层,比如Mysql,Redis
4,操作系统层,比如Linux
5,硬件层
当我们在做应用层(上层)开发时,项目跑通后,我们需要考虑它在框架层是怎么运行的,在存储层(比如Mysql)以什么样的方式进行的(比如,数据在Mysql里以什么样的逻辑模型存储的)(比如B+树这样的模型,它的数据结构是怎样的)
(再深入一点,比如B+树在硬盘是怎么存储的)
当你了解完上面等等这些细节,再做索引优化就会如鱼得水,而不是不停地百度谷歌博客去查(搞清楚这些后,所有场景也就有了解决方案)
成体系的学习是怎样的呢,先说个反例,不建议一遇到个不会的就上百度,折腾个半小时一小时,是解决了,但这不是成体系的学习方法
那么什么是成体系的学习方法呢?
比如先看书。拿Mysql举例的话,比如遇到一个场景,然后到百度搜索了下,知道了怎么建索引,直接解决了当前问题(但是你并不了解它为什么要这么建,它下面的物理模型和逻辑模型是怎样的)
那么怎么办呢,此时你应该找一本还不错的书, 成体系地看一下
看完后,再去结合博客上,别人遇到的case,去印证别人是如何解决特定场景下的特定问题的
同时,这个解决方案对应着书上说的物理模型,逻辑模型或者各种策略,是如何应用的
通过先看书,再看技术博客去印证书上内容,结合实际开发遇到的问题场景的方法,你的知识体系就比较完善了
算法和数据结构
首先,它贯穿应用层,框架层,存储层,操作系统以及硬件层
其次,它是大公司面试的必考项目(意思是,你现在就可以刷题啦~
我的打算是
1,利用2023/6月~9月大一下暑假,先自学完《算法训练营入门篇》这本570页的书,同时学完Acw蓝桥杯辅导课40小时的视频
完成上面2项后,意味着至少多刷了200道左右,类似洛谷普及- ~ 普及 ~ 普及+,这三个难度的题目,省选-里面应该不涉及,毕竟都是算法入门题目
(当然,时间充裕,可以把洛谷官方题单也给刷了,其中NOI-紫题或者省选-蓝题,可以不考虑,费时间太多,你现在需要的是全面系统的打基础外加刷题,蓝题紫题的难度,笔试一般页不会出那么难)
2,第二步,就是大二上,下两学期 + 大二寒暑假3个月,力扣刷掉hot100和剑指offer
能完成上面1,和2,也就意味着你无惧中小厂的算法笔试了,甚至能和面试官有来有回,谈笑风生
3,做了这么多算法,不得打点比赛,ACM我不打,有自知之明,一是没时间,本来就0基础,又比较愚钝,所以就打打CA蓝桥杯,天梯赛,PAT
4,总结:上面3步做的七七八八的话,就算既定目标没有完全实现,也能应付大多数中小厂的笔试了,大厂不好说,因为即使你笔试表现优异,全AC而且提出了优化的思路,也可能因为你的学历,项目的不足,被PASS掉
当你彻底搞懂一个东西后,需要总结,以便于日后的复盘
这时,写博客就派上用场了,可以记录在typora等软件上,也可以写在CSDN,掘金,博客园等平台上,还可以上传到自己的Github,英语好的还能与StackOverflow的大佬交流下
以上四步,层次 -> 体系 -> 算法和数据结构 ->总结,是比较完整的后端学习方法,剩下的,就是做好自己的本职了,都0基础了,每天专心学上五六小时是基本的
重点是三个基础语言的深入掌握,html, css, js,它们是一切前端项目的基石
围绕这三个语言,衍生出很多前端的工具,比如Vue,React....
有些人刚学了点语言,就想着直接冲Vue,这是不可取的,前期就应该扎扎实实学好基础,深入理解,html, css, js分别是用来做什么的,有哪些最佳实现,或者性能上如何优化,怎样更好地去维护.....
而且不论前端后端,初期肯定是枯燥,理论的,没法一下子做出一些东西,需要投入大量时间和精力去度过最开始的艰难。
补充
每个程序员,都要会调试,你要知道每一行代码执行完后会有什么结果,有助于你去理解程序
当然,会用Google以及梯子也是必备的
拿后端举例,本次青训营,会从语言开始(基础中的基础),结合数据结构,数据库,操作系统的一些知识(基础),最后讲讲HTTP等,最终实现一个项目
最后说一下,不论前端还是后端,技术深度比广度重要的多,一定要及早确定自己感兴趣的方向,建立核心竞争力(拿前端举例,你去实现PC端项目或者小程序的思路,包括技术栈都是完全不同的,放到求职也是一样,如果职位不匹配,就算能力强也是没法胜任的)
要解答这个问题,我们首先要对症下药
首先,我们需要知道自己面试的公司,是哪类公司,即当下面试的两种大形势
第一类,面试时更注重你会不会使用某种框架(比如,你面试Java相关岗位,面试官稳了你很多关于Spring框架的问题,深入点的话,比如JVM)
第二类公司,面试时更看重你的基本功,上来就考察你算法和数据结构的功底,让你做一些笔试题目等等
两方面都是需要准备的,所以,面试心仪公司时,要及时复盘总结,根据面试公司的特点对症下药
先谈谈本次(2023暑期)青训营的大项目(8月底项目验收),参加青训营做项目的这个经历,可以锻炼你团队协作和沟通表达的能力,同时,给简历增添了一个比较优秀的项目
这里要更正一个误区,很多大一大二0基础的同学,可能想着抱大腿,这是不可取的。
因为最后面试时,肯定是看你在这个项目中负责那一块,用到了什么技术,怎么优化的,以及相关比较深入一点的细节问题,如果只想着抱大腿,面试时一问就露馅也是不行的
那么为什么不让自己成为大腿呢?自己加把劲,多花时间,戒掉不切实际的小说,游戏和短视频,每年多学1000个小时,最后自己成为大腿不香吗
这里也包括前端需要学什么,方法是,到各大公司的招聘官网去看,比如字节,京东,阿里,腾讯等等,根据里面的实习生 / 应届生 / 社招,以及研发(包括前端,后端,算法,大数据,安全,测试,运维...),运营,产品,销售等各大方向,然后针对性的查看招聘要求,给自己后续的学习定好方向
看多了招聘要求,你就知道自己简历需要写什么,自己需要学什么才能胜任这个岗位呢?
以下是各大公司招聘官网的链接,需要自取
百度 / 字节 / 京东 / 小米 / 华为 / 拼多多 / 网易 / 美团 / 快手 / 新浪 / 知乎 / 陌陌 / 爱奇艺 / 虎牙 / Bli / 滴滴 / 苏宁 / 巨人网络 / 迅雷 / 房天下 / IBM / 中兴
还有之前广泛参考BOSS直聘,实习僧等APP的一些总结
(2条消息) 50家公司Java,C++招聘要求_千帐灯无此声的博客-CSDN博客
结合今晚直播资深HR和字节在职员工的分析,以后面试招聘中,更有优势的往往是“一专多能”的人,而不是面面俱到又都只知皮毛的人。
拿前端举例,你vue学的很好,其他的html,css等只是会用,但是没有花费大量时间去精通,那么你面试包括今后2~5年的工作中,就比那些什么都只会一点的人强。
别人会的东西比你全面,但是没有一个是深入挖掘学习过的,你在DEBUG时比他们更快,这就是优势
首先需要明确的是,可以跟,只要你在暑假或者别的什么时间,用心去学,就算慢一点,总好过你学完所有东西后(408,数据库,一门语言,框架....)再开始接触第一个项目,效率极其低下不说,还不容易建立自信心
要知道,初学者,如果不看教程,单凭自己,一开始是很难自创一个可以跑通的项目的,里面有很多你不懂的前置知识,一些库的使用等等,这时你需要去模仿B站,Github,博客里的,附带说明手册,编码风格良好,好评如潮的项目。
从模仿开始,到自己修改,最后甚至在类似需求下,自己完整搞定一个项目,然后慢慢多尝试点别的有新意,有实际意义的项目,自信心积累起来了,也为后续阅读更深入得书籍打下了基础
由于我打算花一年时间专心学C++,以下是关于C++学习的一些博客
1,小白 C++ 入门并发疯学习路线(书单) - 掘金 (juejin.cn)
2,(2条消息) C++从入门到进阶的系列书籍推荐_c++书籍推荐_dvlinker的博客-CSDN博客
3,(2条消息) C/C++学习路线总结与分享_dvlinker的博客-CSDN博客
4,C++学习路线 (github.com)
5,没人带怎么办,零基础C++入门自学指引 - 知乎 (zhihu.com)
更推荐一专多能,以下是做一个大的项目涉及到的工具和流程作为参考
完成一个项目为什么需要这么多技术点,项目是怎么一步步变复杂的,练手项目和真实项目区别为什么这么大_哔哩哔哩_bilibili
后端举例,因为用的是Go,很多人会犹疑不定,怕浪费时间在Go上,而影响了C++或Java的学习。
首先,这个没必要担忧,因为参加青训营,大多数人想的肯定是,通过这次为期2个月的活动,最终与小组一起,完成一个项目,通过自己负责那部分的编写,锻炼的自己编码的能力,也巩固了刚学的技术和语法,并且增强了未来求职的自信心,同时丰富了简历。
说到这,其实你可以花一点时间学习下Go的语法,因为做项目除了Go外,其他大多数都是通用知识或者说技能,举例就是,这个项目中涉及到的HTTP的知识,你在下一个项目还是能用到,所以时间不会白花
做一个稍微大点的项目,本身就很锻炼人,总比你写那些不到1000行的旅馆住宿系统,计算器或者飞机大战复杂一些
从很长一段工作时间出发,你用什么语言实现一个功能,不是关键点,而且当你熟悉甚至精通一门语言,转其他语言也能很快上手。
而且,就课程本身来说,除了一开始花了一点时间学习Go的语法外,后面更多是深入一些的中间件的知识,就像一些微服务的知识,或者数据库的知识。
所以说,就应用层的开发来说,语言是什么并不重要。
拿直播中资深HR的经历来说,他的上一份工作是Java,但是面试字节时,面试官并没有考Go,更多问的是数据库,操作系统,数据结构....
所以平时学习中,我们更应关注基础能力,至于语言,只要会用,能用好(比如你学C++,遇到一个项目,各种各样的实现中,哪一种效率最高?)
再说说,有同学担心自己只学过C / C++,参加Go的课程担心跟不上或者浪费时间,其实这点很好,因为很多底层实现都是通过C / C++的,比如Mysql是通过C++实现的,Linux是通过C实现的
参加这个活动,更多是编程思维的养成和基础知识的积累(这在做项目上是通用的)
补充
许多软件和系统的基础架构都是使用C++开发的,比如:
操作系统,Web浏览器,游戏引擎,数据库管理系统,媒体播放器...
这些系统和软件的基础架构可能还包含其他语言的组件和模块,但在底层核心层面,C++通常被用来进行高性能的计算和资源管理
2023/7月 ~ 2023年9月(2个月时间)
1,C++
暑期通过
黑马C++,314个视频(2023/6/21截止,已经跟到第156个)+ B站2~3个小项目(飞机大战,俄罗斯方块,计算器)+ 《Essential C++》
后续学习
有了一点基础后,你需要成体系地去学习进阶的书以及Github开源项目了....具体参考链接
2,Mysql
暑期通过
黑马Mysql的30小时视频 + 《Mysql必知必会》,这是暑期入门部分,
后续借助
Mysql实战45讲(丁奇)+ 《MySQL技术内幕:InnoDB存储引擎》 + 牛客数据库1000题
作为进阶的学习,完成上述5个部分内容,面试考到数据库也就成竹在胸了
3,算法和数据结构
暑期通过
570页的《算法训练营入门篇》 + Acw蓝桥杯辅导课40小时视频来完善知识体系
这2部分完成,会多积累200道提高-,加上2023/6/21之前的100道普及-,也就达到了300题的量,300题拿个蓝桥杯CA省二不过分吧.....如果能在此基础上,再把洛谷官方题单省选-以下的题刷了,也就是蓝题之前,省一不过分把......
后续刷题
完成上面书籍,视频和刷题后,你的基础算法已经足以应付部分中小厂的笔试了,但是还不够,你是想
(1)蓝桥杯CA国三,(2)天梯赛个人国三,(3)PAT甲级60分,(4)面试笔试
这就需要你在pintia上,按着甲级满分或者乙级满分大佬的攻略,完整刷一次需要的部分,
比如15~25分刷上100题先,以应对将来的天梯赛和PAT
再说笔试部分,力扣的hot100 +《剑指offer》不得拿下.....道阻且长...道阻且长....
4,Linux
.....
5,计网
......
当前进度,期末最后半个月,只能抽一半时间学习,剩下一半时间被期末试绑架了...
《算法训练营》 > C++黑马 > Mysql黑马
至于《Essential C++》1~2周就能过一遍代码和书
至于《Mysql必知必会》也是1~2周每天2小时的事
至于Acw蓝桥杯40小时,这个排在优先级最后,一个是确实花时间,一个视频2小时附带2~3题;一个是大二后续可以慢慢刷,非朝夕能完成的