查看: 6034| 回复: 39
跳转到指定楼层
上一主题 下一主题
收起左侧

[转CS-自学] 传统工科转码的一点回忆录分享

   
全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
下个月就要入职了,回忆起自2020年7月开始转码,这一年半的时间不快也不慢,学了很多东西,也能做一些事,也还存在很多知识盲区。把经历分享出来,希望和各位同仁交流,共勉。转码背景:传统工科的研一新生,编码经验几乎为0,有一些统计和ML的经验,对backend几乎没用。
结果:没能留美,但也算找个还行的sde。
严格来说,转码最早应追溯到20年3月左右,由于疫情开始,课程完全转为线上,在家开始自学data structure & algorithm。因为当时只学过python的一些语法和几个数据分析的库,我在b站找了北大开的python版数据结构算法课,从基本的线性结构,非线性,图,算法从搜索,排序,递归,到dp还有图的bfs,dfs等等,也算有滋有味的过了一遍,随后开始在leetcode上做练习。

现在回忆起来,对于我来说从完全0基础直接学怎么刷题,题是能做的,但是会很懵逼。最重要的两个问题是:1)没有学过基本的程序设计,没有ood思想 2)对开发的整个宏观概念没有建立起来,不知道自己写的coding能干嘛,应该写在哪里。

中间刷了几十道题,跑去学ML一些乱七八糟的东西,略~
2020年7月,我改变了留实验室的想法,不考虑读博,开始全心思转码。在考虑到java的就业地位,又选择重头再来。也是在b站找了java的语法课,从基本的变量,java数据结构,函数,面向对象(封装,继承,多态),接口编程,io,异常,反射。再到javaweb:从前端开始html -> css -> js ,包括使用el表达式的jsp,jquery等等, 服务端从servlet, cookie session, 数据库的jdbc, mysql的crud等等,最后能跑一个部署tomcat上crud数据库有页面的war项目。虽然在每个模块的技术还是无比粗糙,但算是对整个软开有了一个基本的认识。

web撸完后我去学了一些design pattern  当时可能是觉得国内面试总问吧,现在看来这步是很错误的,第一 在没有读大量框架源码时没必要看这个 看了也记不住 第二,没有大量实际开发经验时,这些模式背下来也是纸上谈兵。

大概是20年11月,我开始接触能商用的web框架,大名鼎鼎的ssm,也是花了很多时间从配xml,bean的注入,ioc,aop那一堆,mvc则是花了很多时间看请求分配,model&view,请求暴露,异常处理,转发重定向等等等

这个阶段其实我还没有学过计网(当然本科的早忘了),学起这些框架来如果不往深了想其实也好像明白,不过学这个很重要的一个意义是,我可以做项目了。
. .и
21年1月我开始做第一个项目:后端用到了spring cloud,reids做缓存、共享内存(session)、分布式锁,mq做解耦,分布式事务 除此之外涉及到了一些并发技术:线程池,异步编排,锁等,还有接口幂等, rpc,网关负载均衡等等等 关于分布式的技术。

很多东西用之前连听都没听过,就边做边学得了,先学个大概齐,后边再精。

这个项目我做了快俩月,到了3月我觉得之前的并发实际上就是照着敲,线程间怎么通信,同步,锁是怎么回事,都不懂。我就去专门的学java的juc,包括互斥,乐观悲观,synchronized底层,原子类,jmm模型和3大特性,juc的aqs队列,阻塞队列,线程池,一些重要的模式比如生产者消费者模式,wait-notify的保护性暂停(理解了这个,什么join,future,netty的promise,异步编排都差不多了)。

. ----并发会涉及一些jvm的内容,比如对象头等,所以这期间我也学了类加载,运行时数据区,gc,有些是8股文,但有些也让我能深刻理解代码运行的某些行为。
. Χ
5月份我开始回头用java撸算法,其中一开始按着左程云的网课来做,他的很多解法,比如dp我今天还在用。leetcode在接下来的2,3月前前后后刷了250道吧 150medium 50 easy 50 hard。不算多,但其中的高频题反复刷了很多遍。

这期间,我也伴随着开始回过头学OS,internet这些基础课,我看的是哈工大的两门网课,还有自顶向下的书。这些课其实非常重要,网络课可能还好入门些,对于没有汇编和体系结构的我,对c也不熟,学os头非常大,只能硬啃,一遍看不会看5遍。

如果这两门课的同学,仅仅学点框架就去做开发,一开始或许也行,但一遇到问题就会懵,像http,tcp,对socket编程,rpc通信都非常重要。os更不用说,所以再难也要撸。我到今天还想着要回头找时间把os的实验做完。

大概7月吧,我开始对redis的一些源码,细节进行研究,mysql的索引优化,联合索引,以及这些中间件的分布式架构,主从,集群开始学习,rpc也试着手写了一个小工具,这期间又涉及到了java nio,netty的学习,让我对通信的细节比如流式的tcp的问题,sticky&unpack的解决,序列化反序列化,消息协议有了很多掌握。这些内容比框架底层的多,所以没有os基础,不了解网卡收包,epoll这些事,其实不太好理解。
.1point3acres
8月就开始面试了 一开始接了几个国内厂的面,还算蛮顺利,也很快在提前批就拿了几个offer。.google  и
. 1point 3 acres
一眨眼就是11月,我也投了小100个美国的sde,可惜因为专业不匹配,最后只有一个油服给了机会,感觉更想是在面国内,只不过语言变成了英文。简单的算法题夹杂了大量系统设计,业务场景的讨论,比如缓存和数据源的数据一致性等等等。

可惜终面挂了。

嗯,现在回忆起来,转码的同学,第一件事是先有个转码友好的硕士项目,时长可以长一点,基础课多一点,最重要的几门应该就是oo,os,网络,数据库,还有分布式,统计算法的部分不想从事随便听听就行,只可惜我在申研究生时不敢申cs。第二,一定要有个roadtrip,cs的东西前后连贯很重要。 第三,撸一个项目可以会很多技术,先用着,再去了解原理。 .google  и

觉得有用给点米,谢谢各位了,也欢迎留言交流。


.


评分

参与人数 9大米 +9 收起 理由
klklkk + 1 赞一个
rabbid + 1 赞一个
skrm + 1 赞一个
小亩_qis6zp6 + 1 很有用的信息!
千千结study + 1 赞一个

查看全部评分


上一篇:我的转码日记
下一篇:计算机信息系统即将毕业,纠结以后做SDE还是MLE
全局:
gudugudu 发表于 2022-02-27 05:11:20.google  и
我很佩服楼主学了那么多课做了那么多准备

不过在美国转码根本不需要学这么多
这个有些误导
很多人没有学位经验实习 连面试都拿不到
刷那么多题没有用武之力啊
回复

使用道具 举报

推荐
 楼主| Fenglongtamu 2022-2-27 23:05:15 | 只看该作者
全局:
gudugudu 发表于 2022-2-27 21:11
我很佩服楼主学了那么多课做了那么多准备

不过在美国转码根本不需要学这么多
. Waral dи,
哎 后面也意识到了 那个时候我们系没有人转码 我就自己在小区的学习室泡着 从早到晚 每天也很焦虑 看到没听过的东西就想搞懂 所以我现在回想有个好的degree项目很重要 有氛围有队友 自己孤军奋战就很累
回复

使用道具 举报

推荐
 楼主| Fenglongtamu 2022-2-26 21:08:54 | 只看该作者
全局:
KirinWHIS 发表于 2022-2-26 13:32.google  и
有个问题想请教一下,就是我现在学完javaSE了,html/css/js也学过了。想问下LZ找实习必须得学完SSM吗?因为 ...
.1point3acres
这个我不敢说 假如你没学过jdbc这个规范 直接用那些orm框架我不知道你用起来会不会有点迷糊 spring也是同理,假如你连servlet都没用一下,没学过web,直接用那些web框架,可能也会懵吧。其实这已经很速成,tomcat把底层通信都做好了,你不需要考虑协议,序列化等等,你只处理请求, 某种程度上我觉得学jdbc,servlet就是在学ssm,这些这种web开发的模式大同小异,不只是框架级别,我现在用go,也是这套东西,不白学的。
回复

使用道具 举报

全局:
感谢楼主的分享~想请问楼主在b站找的Java课是什么呀,方便分享下吗?以及那个课适合0基础的人学么?我很久之前上过一门基础Java 课,但基本都忘了😂 谢谢
回复

使用道具 举报

🔗
 楼主| Fenglongtamu 2022-2-25 12:41:19 | 只看该作者
全局:
huanghuang106 发表于 2022-2-25 12:02 ..
感谢楼主的分享~想请问楼主在b站找的Java课是什么呀,方便分享下吗?以及那个课适合0基础的人学么?我很久 ...

很久以前了 具体有点忘了 俩方向吧 一个是大学的程序设计课程 再一个是培训机构的java课  培训机构更偏应用 如果是中间件或者流行的开发技术 我会选择他们更实用, 但是基础课我还是建议大学的,尤其是体系结构,操作系统,网络这种。
回复

使用道具 举报

🔗
Ashi02 2022-2-25 20:03:52 来自APP | 只看该作者
全局:
非常感谢楼主的分享,自己现在也还处于不知道自己的代码有什么用的状态😔
回复

使用道具 举报

🔗
 楼主| Fenglongtamu 2022-2-25 22:59:11 | 只看该作者
全局:
Ashi02 发表于 2022-2-25 20:03
非常感谢楼主的分享,自己现在也还处于不知道自己的代码有什么用的状态😔
. Waral dи,
转码的懵逼都会经历的 加油 越往后就越清楚自己在干嘛 在填哪一块知识了
回复

使用道具 举报

🔗
Tinaxu713 2022-2-26 03:56:01 | 只看该作者
全局:
谢谢分享,我转码稍微晚一点,进步比你慢了很多,要加油了!
回复

使用道具 举报

🔗
Evelyn8381 2022-2-26 04:06:15 | 只看该作者
全局:
感谢楼主分享
回复

使用道具 举报

🔗
qjia2019 2022-2-26 04:24:56 | 只看该作者
全局:
新加坡挺好的。没开opt也还好可以留着以后用。不过说实话楼主坚持一下哪怕中转icc也许也能在这边上岸。
回复

使用道具 举报

全局:
感谢分享 非常有用 ..
所以在美国找还是需要学位?
感觉你已经学得很扎实了
回复

使用道具 举报

🔗
 楼主| Fenglongtamu 2022-2-26 09:32:26 | 只看该作者
全局:
qjia2019 发表于 2022-2-26 04:24
新加坡挺好的。没开opt也还好可以留着以后用。不过说实话楼主坚持一下哪怕中转icc也许也能在这边上岸。

对我个人来讲 也不是久居之地 如果胆子大过两年再读2硕回来 求稳后边就得走h1b1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表