ChaseDream
搜索
12下一页
返回列表 发新帖
查看: 29490|回复: 17
打印 上一主题 下一主题

文转CS 经验帖总结

[复制链接]
跳转到指定楼层
楼主
发表于 2019-1-29 00:15:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1000 道题目,你刷三边,我保重你可以找到工作 :)
xiangmu:
就udemy 啊挺多的,买几个跟着做呗做点full stack的就好啊,什么mern stack的,mean stack的,java spring的,然后部署一下就好了。你找什么方向的啊 我最近在看udemy的全栈项目。Udemy 的 Webdev bootcamp 我脚的不错 我刚刚跟完

the web development bootcamp ~udemy上那个node.js的课挺不错的The complete Node.js developer course,就是卖的最好的那个

工作后越来越对software development感兴趣,于是楼主在毕业两年后再次决定业念一个cs degree。


算法我是在暑假一个quarter修的,因为据说这门课对找工作很重要,事实也是,dynamic 是google他们最喜欢考的(虽然我挂了google),课程里面学了之后刷题就好懂了。你可以上Reddit上搜 好像有个老美们讨论这个program最难的三门课的帖子。


首先,作为转行cs特别是零基础转cs无论是不是念degree还是自学,途径不重要,重要的是一些基础课必须要好好念完,作业也必须好好做,这个阶段是打基础的,我个人觉得刷题一定不是第一步,没有基础的刷题就是盲人摸象。个人认为的cs基础课是:
1到2门programming 入门,我个人觉得cs入门Java或C++比较好,这里可能别人有异议,我是在学校用C++入的门,两门C++入门课,之后自己学习的Java
Data structure (极其极其重要)这门课我觉得是帮助最大的
Operating System & computer architecture
这两门课基本是先修和后修的关系,我当时想直接上operating system,学校不允许,然后上的computer architecture,这两门课基本是帮助在更加low level层面理解计算机原理,我工作之后觉得非常有用,因为不是很多bug都可以通过debugging tool找到的,也不是肉眼能看到,一个程序怎么样运行,build execute complie runtime之间的关系是怎么样,我成为SDE之后的第一个project遇到了一个大问题,就是涉及到complie非常底层和OS相关,如果没有这两门课的基础,我肯定会被block很久很久。

有了cs基础知识之后可以开始选一些project based的课程,比如web development,database design,简历上的项目可以从udemy,udacity或者一些培训班中完成,对我个人而言学校的project都比较初级,我都是找到其他途径做的project放到简历上。

补充内容 (2018-11-1 02:47):
由于有一些人咨询side project的问题,我在这里统一回答一下:我的resume上放了三个side project,其中两个是udemy上跟着课程做的,一个是full stack web application,一个是C++写的3D小游戏

补充内容 (2018-11-1 02:50):
还有一个project是在公司参与了dev-mentor program,和SDE一起合作完成了一个mini-project,是关于internal support tool的一个advanced feature,用Java完成大概5000行代码量。这个project含金量相当于一个实习

收藏收藏25 收藏收藏25
沙发
 楼主| 发表于 2019-2-3 23:52:13 | 只看该作者

我觉得如果一点算法和数据结果都不知道的话,要先学一门算法和数据结构的课,里面复杂的数学推导和证明可以不管,但是一定要会分析时间和空间复杂度,这是面试必问的。

有了数据结构和算法的基础,之后我推荐Programming Interview Exposed,里面有大段分析,讲一个怎样分析一个问题,然后想出BF方案,再优化的过程,我觉得讲的非常好。这本书看完,就可以刷CC150或者Leetcode了。不过不管是看书还是刷Leetcode里面的题,一定要自己想结果,一个题至少要想个十几分钟乃至几小时,如果实在想不出来,再去看答案,如果想出了方案,再自己想想怎么能优化不?之后再看答案,对比一下自己为什么没想到最优方案,然后一定要彻底理解这个最优方案,如此下来遇到同样甚至变形的题才会有思路。

强调一下:直接看答案或者只想很短时间就看答案收获是比较小的,只有自己仔细想了,收获才最大!

以上个人意见,欢迎大家讨论,一起找到Dream Job!
板凳
 楼主| 发表于 2019-2-3 23:55:36 | 只看该作者
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=115677&extra=page%3D1%26filter%3Ddigest%26digest%3D1%26digest%3D1
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=435598&extra=page%3D1%26orderby%3Dheats
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=188246&extra=page%3D1%26orderby%3DheatsLeetcode按公司归类
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=79646&extra=page%3D1%26orderby%3Dheats应该怎么样刷题
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=436925&extra=page%3D1%26orderby%3Dheats 关于算法的一点总结
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=169243&extra=page%3D1%26filter%3Ddigest%26digest%3D1%26digest%3D1吐血总结:面试知识点
https://www.1point3acres.com/bbs/thread-282692-1-1.html 我的一点面试经验[算法准备]
http://interactivepython.org/courselib/static/pythonds/Graphs/ImplementingBreadthFirstSearch.html  !!!!!!!!!!!!!!!!!!!1
地板
 楼主| 发表于 2019-2-25 02:46:37 | 只看该作者
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=477252&page=1#pid5610636:
不会,cs门槛很低的,只要认真学,还是能很快上手的
放心吧,努力学习肯定没问题的。
两年可以做码农
楼主建议看一下美本cs core课程 都是可以一年半读完的
OOP 离散
数据结构 计算机系统
算法 os
真0基础的话来多一门intro的课就好了 正好两年
可以的,我入学时连Hello World的水平都没有。
做为学弱,当然觉得ds难,涉及的数学太复杂了。。。sde只要编程语言熟练,对基本算法掌握了,应付工作没太大问题。。。
并不是,不过根据我室友的感想…大概如此吧…不过说真的得看你自己,任何一个方向都可以如此粗暴的概括:算法竞赛:学算法,a题wa题wa题wa题,服务外包/创业比赛/whatever:吹逼大赛,网页开发:面向stack overflow编程

自己试一遍才知道具体干什么,有没有意思,喜欢不喜欢,所以建议就是:多试试。
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=478883
5#
 楼主| 发表于 2019-2-25 02:49:30 | 只看该作者

来自上面网址:

From: http://dahua.spaces.live.com/default.aspx

1. 线性代数 (Linear Algebra):

我想国内的大学生都会学过这门课程,但是,未必每一位老师都能贯彻它的精要。这门学科对于Learning是必备的基础,对它的透彻掌握是必不可少的。我在科大一年级的时候就学习了这门课,后来到了香港后,又重新把线性代数读了一遍,所读的是

Introduction to Linear Algebra (3rd Ed.)  by Gilbert Strang.

这本书是MIT的线性代数课使用的教材,也是被很多其它大学选用的经典教材。它的难度适中,讲解清晰,重要的是对许多核心的概念讨论得比较透彻。我个人觉得,学习线性代数,最重要的不是去熟练矩阵运算和解方程的方法——这些在实际工作中MATLAB可以代劳,关键的是要深入理解几个基础而又重要的概念:子空间(Subspace),正交(Orthogonality),特征值和特征向量(Eigenvalues and eigenvectors),和线性变换(Linear transform)。从我的角度看来,一本线代教科书的质量,就在于它能否给这些根本概念以足够的重视,能否把它们的联系讲清楚。Strang的这本书在这方面是做得很好的。

而且,这本书有个得天独厚的优势。书的作者长期在MIT讲授线性代数课(18.06),课程的video在MIT的Open courseware网站上有提供。有时间的朋友可以一边看着名师授课的录像,一边对照课本学习或者复习。

http://ocw.mit.edu/OcwWeb/Mathem ... ourseHome/index.htm

2. 概率和统计 (Probability and Statistics):

概率论和统计的入门教科书很多,我目前也没有特别的推荐。我在这里想介绍的是一本关于多元统计的基础教科书:

Applied Multivariate Statistical Analysis (5th Ed.)  by Richard A. Johnson and Dean W. Wichern

这本书是我在刚接触向量统计的时候用于学习的,我在香港时做研究的基础就是从此打下了。实验室的一些同学也借用这本书学习向量统计。这本书没有特别追求数学上的深度,而是以通俗易懂的方式讲述主要的基本概念,读起来很舒服,内容也很实用。对于Linear regression, factor analysis, principal component analysis (PCA), and canonical component analysis (CCA)这些Learning中的基本方法也展开了初步的论述。

之后就可以进一步深入学习贝叶斯统计和Graphical models。一本理想的书是

Introduction to Graphical Models (draft version).  by M. Jordan and C. Bishop.

我不知道这本书是不是已经出版了(不要和Learning in Graphical Models混淆,那是个论文集,不适合初学)。这本书从基本的贝叶斯统计模型出发一直深入到复杂的统计网络的估计和推断,深入浅出,statistical learning的许多重要方面都在此书有清楚论述和详细讲解。MIT内部可以access,至于外面,好像也是有电子版的。

3. 分析 (Analysis):

我想大家基本都在大学就学过微积分或者数学分析,深度和广度则随各个学校而异了。这个领域是很多学科的基础,值得推荐的教科书莫过于

Principles of Mathematical Analysis, by Walter Rudin

有点老,但是绝对经典,深入透彻。缺点就是比较艰深——这是Rudin的书的一贯风格,适合于有一定基础后回头去看。

在分析这个方向,接下来就是泛函分析(Functional Analysis)。

Introductory Functional Analysis with Applications, by Erwin Kreyszig.

适合作为泛函的基础教材,容易切入而不失全面。我特别喜欢它对于谱论和算子理论的特别关注,这对于做learning的研究是特别重要的。Rudin也有一本关于functional analysis的书,那本书在数学上可能更为深刻,但是不易于上手,所讲内容和learning的切合度不如此书。

在分析这个方向,还有一个重要的学科是测度理论(Measure theory),但是我看过的书里面目前还没有感觉有特别值得介绍的。

4. 拓扑 (Topology):

在我读过的基本拓扑书各有特色,但是综合而言,我最推崇:

Topology (2nd Ed.)  by James Munkres

这本书是Munkres教授长期执教MIT拓扑课的心血所凝。对于一般拓扑学(General topology)有全面介绍,而对于代数拓扑(Algebraic topology)也有适度的探讨。此书不需要特别的数学知识就可以开始学习,由浅入深,从最基本的集合论概念(很多书不屑讲这个)到Nagata-Smirnov Theorem和Tychonoff theorem等较深的定理(很多书避开了这个)都覆盖了。讲述方式思想性很强,对于很多定理,除了给出证明过程和引导你思考其背后的原理脉络,很多令人赞叹的亮点——我常读得忘却饥饿,不愿释手。很多习题很有水平。

5. 流形理论 (Manifold theory):

对于拓扑和分析有一定把握时,方可开始学习流形理论,否则所学只能流于浮浅。我所使用的书是

Introduction to Smooth Manifolds.  by John M. Lee

虽然书名有introduction这个单词,但是实际上此书涉入很深,除了讲授了基本的manifold, tangent space, bundle, sub-manifold等,还探讨了诸如纲理论(Category theory),德拉姆上同调(De Rham cohomology)和积分流形等一些比较高级的专题。对于李群和李代数也有相当多的讨论。行文通俗而又不失严谨,不过对某些记号方式需要熟悉一下。

虽然李群论是建基于平滑流形的概念之上,不过,也可能从矩阵出发直接学习李群和李代数——这种方法对于急需使用李群论解决问题的朋友可能更加实用。而且,对于一个问题从不同角度看待也利于加深理解。下面一本书就是这个方向的典范:

Lie Groups, Lie Algebras, and Representations: An Elementary Introduction.  by Brian C. Hall

此书从开始即从矩阵切入,从代数而非几何角度引入矩阵李群的概念。并通过定义运算的方式建立exponential mapping,并就此引入李代数。这种方式比起传统的通过“左不变向量场(Left-invariant vector field)“的方式定义李代数更容易为人所接受,也更容易揭示李代数的意义。最后,也有专门的论述把这种新的定义方式和传统方式联系起来。

————————————————————————————

无论是研究Vision, Learning还是其它别的学科,数学终究是根基所在。学好数学是做好研究的基石。学好数学的关键归根结底是自己的努力,但是选择一本好的书还是大有益处的。不同的人有不同的知识背景,思维习惯和研究方向,因此书的选择也因人而异,只求适合自己,不必强求一致。上面的书仅仅是从我个人角度的出发介绍的,我的阅读经历实在非常有限,很可能还有比它们更好的书(不妨也告知我一声,先说声谢谢了)。
post_newreply



评分
6#
 楼主| 发表于 2019-2-25 02:59:50 | 只看该作者
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=444440


2018(4-6月)-[]EE硕士+3个月-1年 - 猎头|BayArea 码农类General全职@Google在职跳槽
在职一年跳槽去了自己很喜欢的公司,很多同学朋友来问刷题经验,感觉大家问的问题都差不多,写个帖子总结一下
【--------没有废话-------------】
最常被问的几个问题:
1. 准备了多久?时间线是怎么样的?
   从开始刷题到最后一个面试大概整整三个月。刷三四周开始找hr聊天,聊完一两周安排电面,电面完一两周onsite。拿来练手的公司最好安排在刷题两个月的时候,最后几个dreamcompany放在第三个月。同档次的offer一起拿,好跟hrarguepackage

2. 刷多少题比较合适?刷的速度如何?在职如何安排时间?
最后一共刷了340题。150 左右可以开始电面,两三百开始onsite。
刚开始特别慢,因为毕业的时候没刷题看地里面经进的公司,基本啥也不会哈哈(再次感谢地里,鞠躬)有时候一天一道hard都看不懂。后来越刷越快吧。所以刚开始不要急,看看答案,熟悉不同类型题目的思路,后来肯定会变快的。
在职刷题需要下定决心,不然会因为已经有工作了而没有动力,很久都跳不成功,然后又想升职又想排卡,更没法跳了。Newgrad进了不喜欢的公司,一定要越早跳槽越好。不然大概率会温水煮青蛙,堕落下去。(虽然说的好听,其实我也是这样,差点鬼混下去了2333,在职跳槽真的很难有动力)基本上那三个月晚上回家/周末都在刷题,很辛苦,用完了所有假期去刷题和onsite

3. 刷公司tag题吗?
   我没有针对不同公司刷题,只会在面试前两三天看看那个公司的面经(偶尔能遇到原题,但不要有侥幸心理)。不同公司风格不同,有的题库小要求bugfree(比如fb?),刷tag可能有用。总体来说如果目标不止一个公司,最好刷经典题而不是tag

4. 刷几遍,怎么刷
   经典的几十道题刷了三四遍,其他一遍。刚开始没概念好题烂题一起刷,后来就有感觉那些题比较好,哪些题纯粹浪费时间。比如bfsdfsbacktrackinglinked liststringtree map,binary tree tranversal等等一定要熟练掌握。Dp什么的我觉得不太考。纯考edgecase,算法很少的题也没什么意思。基本上leetcode点赞多的就是值得好好研究熟练运用的好题。个人感觉按类型刷比较好。

5. 怎么拿到面试?
   直接推到manager手里最好,找不到的话去linkedin勾搭hr。然后就是找同学在内网内推。最后海投。

6. 面试经验?面试中注意什么?
英语流利,沟通顺畅和会写代码都很重要。不要背答案,就算以前刷过这道题,因为一步步推出来和靠碎片式的记忆背答案区别很大。
白板写题和电脑很不一样。如果能选电脑可以考虑一下。不然要提前训练白板。(比如我周末会去公司会议室练习白板mockinterview)
写题之前要问清楚,写到一半/写完发现理解错了基本gg。思路要快,不用立刻想到所有步骤,但要有大概思路。在写的过程中不断填充一开始没想到的部分,注意交流和面试官的hint。

7. 有性别优势/有被烙印黑嘛?
我的感觉是,大公司歧视男生,start up歧视女生。。。所以总的来说差不多吧,哈哈。比如我有的startup面的很好but还是不给offer; 相反的,传闻bar很高的大公司面我的题都不难。遇到的烙印也都人很好,没感觉被黑,不要有这种想法比较好。

8. 推荐的资源?
  强推印度小哥YouTube 频道:https://www.youtube.com/channel/UCZLJf_R2sWyUtXSKiKlyvAw
  讲的超清楚!算法刷题最佳导师
  还有个小哥 https://www.youtube.com/channel/UCRPMAqdtSgd0Ipeef7iFsKw系统设计讲的比较多(我很喜欢他因为感觉他概念很清楚,很聪明

9. 面了什么公司?面经?
   当时只写了两个面经:http://www.1point3acres.com/bbs/thread-384241-1-1.html
   http://www.1point3acres.com/bbs/thread-428940-1-1.html (面了很多,但是我懒XD
    乱七八糟面了一堆,金融公司, tech 大厂, start up都面了,大概不到十家公司吧。Opendoortwo sigma没过,其他都过了好像。
    整体感觉金融公司比较水,basebonus 巨高因为没有股票。有的金融公司流程很快(比如bloomberg一天出结果,三天offer deadline。。。。
    大厂比较好准备,因为就是算法。。。刷就行了。大厂流程慢,最好安排早点
    Start up考的更实际更看基本功。(对我这种转专业的还是需要多准备一下的~)比如他们喜欢考multithreadlock,还有一些底层的东西(被考过实现queue,我用了arraydeque的写法,还好看过类似视频。。)还很喜欢问sqlnosql的区别,如何处理largescale data。一年经验的话问到这个地步就差不多了。这些内容我都是刷题之余看YouTube视频补充的知识。(转专业基础差硬伤呀)。以后有身份了想去startup玩玩。

10. 还有什么补充嘛?
嗯。。。想说的好像基本都说啦,那就给大家拜个早年吧(????
不得不说湾区比其他地方机会多得多哈~
以及真的觉得题目没有大家想的那么难,思路清晰,交流顺畅也很重要哈~有几家我自己以为挂定了很沮丧,结果都过了,所以大家要自信一点,不要像我一开始一样没信心哈~


Good luck各位!
求米(星星眼

7#
 楼主| 发表于 2019-2-25 03:11:48 | 只看该作者
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=275823&extra=&page=1
小白的研究生转CS与找实习经验总结 Part 1


我的另一篇实习面经贴请见:http://www.1point3acres.com/bbs/ ... p;page=1#pid2993337


晚春四月,舒适的温度、盎然的生机、温暖的阳光,作为漂泊在北美转CS研究生的你,是否享受其中呢?气候与美景,它们就在那里,而不同的,是从中匆匆而过的游子的心情。

周围的人大抵可以分为两种,找到实习的和没找到实习的。虽然外表并无不同,但是心境明显有差。和找到实习的同学聊天,能明显感觉到他们的自信,对以及生活的热爱,甚至对未来的乐观。而没有找到实习的,往往是依旧汲汲于当下,耐心和希望一点一点被消磨殆尽,无暇消受眼前的春光。

是的,现实就是这么残酷,暑期实习像一道冷冰冰的墙,硬生生地将人分为两类。我曾经误打误撞进入一个本科生的就业讲座,台上分享经验的大四同学描述她在招聘会上所见的研究生之状态:“这是他们唯一的实习机会,于是便挤破了头往里钻,就像这个暑假找不到实习就活不下去了一样。”

是啊,尤其对于转专业来CS的同学,更不好过。找到实习与否,一定程度上成了衡量他们人生决策的标杆以及探测未来的水晶球。若成功,未来的信心喷涌而出,而若失败,身上的枷锁便又多一层。

而我很幸运,作为一个转专业学生,在四月找到了实习,此后,便发现身边的春光,从未如此明媚。


EE与CS
我本科来自国内某邮电大学的通信工程专业。曾经大二就萌生过转CS的想法,但是父母并没有十分支持,且认为放弃本校王牌专业而选择泯然众人的计算机有些亏,故放下了这个打算。现在想想,如果那时候就转了,现在会好过很多。

简单说下个人对EE和CS比较的看法吧。注意以下都是个人经验,难免有片面之处,勿喷。首先要强调一点的是,市场上对EE人才的要求,大多都高于CS。一般一个技能较为全面的EE人才,标配电子电路(各种门,半导体,电路)、计算机硬件(各种单片机,VHDL,C)、信号与统计(频谱、波、各种变换)以及编程技能(matlab仿真等等,甚至部分CS的编程)。这对电子、计算机、数学方面都有相对比较高的要求。而一个市场上抢手的entry level CS人才,只需掌握算法与数据结构、一到两种擅长的编程语言(前端/后端/data)、计算机基本知识(架构,OS)即可。CS人才虽然和EE各有所专,但是重大区别在于,CS一般对数学的要求不高,以及实习面试比较单一(算法与数据结构),更好准备。

虽然我本科EE方面的成绩都很高,但是EE依然给我一种hold不住的感觉。说信号与系统吧,就只知道最简单的,数学一难就懵逼;说单片机吧,玩过的比如什么58、arduino、树莓派、MSP430、FPGA等等,都觉得太基础,只能玩点小花样,遇到复杂的拓展也是懵逼;说电子电路吧,什么模电数电简直是深坑,要难可以难到无法想象;说计算机系统与结构吧。。。你确定要去写汇编?写硬件C?综上所述,EE给我的感觉就是,当我读完本科,我依然一无是处,到就业市场上没有拿得出手的像样技能。相比学金融的各种经济知识专有名词忽悠得风生水起,学CS的各种代码信手拈来写app做网页不在话下,EE的实用性落寞很多。

更重要的是市场需求问题。CS岗位如雨后春笋般冒出,各种所谓互联网+、基于CS的服务业等等,机会如爆炸式增长,大数据和人工智能也火得不行。而反观EE,摩尔定律走到了尽头、通信技术止步不前,整体景象比较平稳甚至有些悲观。唯独智能手机的兴起带动移动芯片发展、以及智能硬件的创业潮,为EE带来一丝生机,但这向上的势头却也不如CS当下的大数据、人工智能,以及前一段时间的移动互联网来得火。总体来说,EE还是十年前的EE,而CS早已不是十年前的CS。我现在学校(USC)的招聘会,CS岗位和EE岗位目测是5:1,而CS学生和EE学生基本是1:1,竞争激烈程度可见一斑。

所以,如果你在纠结要不要从EE转CS,我个人的建议是:只要你不是热爱EE,早转CS早好。


怎么转CS
这个问题要分几步走。首先,你本科的时候有学过这几门课么:算法、数据结构、操作系统、软件工程。尤其是算法与数据结构。没学过基本的算法与数据结构空谈转CS都是耍流氓。如果你萌生了转CS的打算,第一步就是学算法与数据结构,这是基本的基本。曾经一个谷歌面试官跟我说过,他们即使招产品经理,也会面试算法题,因此重要程度可见一斑。同时,这也是衡量你将来适不适合CS的一个小测试,如果你不能理解递归,不能将算法翻译成代码,对编程还有恐惧,那你有可能真的不适合CS。

接下来是确定方向,你是想走前端还是后端?想不想做Data Science?你的兴趣点在哪里,手机app,网页,还是机器学习?CS门类很多,所需要的技术栈也千差万别。除非你铁了心做全栈工程师,不然,像诺曼底登陆一样,找一个突破口登陆CS,至关重要。我个人选的方向是data。三个理由:1.大数据很火啊。2.本校(USC)的Data Informatics方向就是为培养新时代大数据人才而设立的,就是对标当前的大数据就业市场。3.大数据相关的技术,ML啊,AI啊,都很感兴趣。

确定了方向以后,自己需要规划成长路线。就像塞尔达荒野之息你进入每个大迷宫你都需要先拿到一份地图,然后根据地图上的任务点做规划。有人曾说目标与战略的区别,目标就是”我想登顶珠峰“,而战略就是你的规划:怎么去珠峰,带多少补给,天气怎样,怎么分配体力等等。转CS就是你的珠峰,就是你要打的boss。

有一种获得地图的方式推荐给大家,就是你搜你感兴趣的CS职位,它下面所需的技术栈是什么,哪些你已经会了,哪些你还不会。举个例子,我想做data方向,所需技术大概是一种编程语言(Java/c++/etc.)+ Python + SQL, 如果是data scientist,则还需要R,以及数学功底,如果是data engineer,则还需要Spark, Hadoop等等大数据框架。我一开始的时候,仅仅会Java,Python和SQL完全不会,更别提Spark, Hadoop, R了。

地图有了,下面如何规划路径呢?上网课啊!对于Python,我上了南大的《用Python玩转数据》,对于SQL,我上了杜克的《Managing Big Data Using MySQL》。上完这两门课以后,也算是对这两个技术入了门,为今后的深入研究打下了基础。

综上,如果你有了算法与数据结构基础,明确了转专业的方向,知道了所需要的技术栈,并且做好了规划,那么你就已经打败了至少50%的转CS学员,赢在了起跑线上。


准备实习
转了CS而不找CS实习,那和咸鱼有什么区别?而实习,必然和另一个词联系起来,那就是刷题。有人刷了很多题、刷了很多遍题,依然找不到工作,而有人没刷过题,或者只刷了很少的题,却找到了工作。原因很简单,正如不能以代码的行数来评判一个程序的质量一样,刷题的题数和你对算法的理解,并没有必然关系。

我个人直到找到实习,刷了约150道leetcode,全部都是简单题和中等题,难题一题没碰。说实话,如果你只是找实习,easy和medium足以应付大多数公司。关键是,你必须深刻了解每道题有多少种解决思路,每种思路的时间和空间复杂度是什么。我的建议是,如果以找实习为目标,精刷不超过150道的题,好题至少刷两遍,是最佳方案。

除了刷题,第二点面试常考的,就是各编程语言基础知识。比如java的继承多态等等。很多公司对算法要求不高,但特别喜欢问这方面的题。如果你恰巧想走java,那么推荐你两个资源,一是普林斯顿的算法1和算法2两门公开课,它不光教算法与数据结构,还教很多高级的java知识以及OOP设计思想,是非常实用的一门课。第二个资源是我自己以及小伙伴总结的Java高频面试triky 100题,可以在我的一个创业项目网站:
https://smilelearn.stanford.edu,里面看到,进去以后搜关键词java,或者我的github:https://github.com/zhtpandog/One_Hundred_Tricky_Java_Questions,里面有整理版和详细的分析与解答。而如果你想走C++,推荐coursera上北京大学的一套系统课程,包括c,c++基础,面向对象设计,基础和高级数据结构和算法in C++。

第三点面试喜欢考的就是你对应岗位specific的知识。比如大数据方面,会问你大数据框架,spark, hadoop等等。

其他通用的问题,比如如何debug,OOP设计思想、系统设计、甚至OS以及统计等,如果有时间,不妨也准备一下。

因此,总结来看,日常技术方面的准备,包括刷题、编程语言基础、职位特定知识,以及其他通用知识点。

(未完待续)
(后续准备要讲的内容:如何争取面试、如何准备面试、职业规划经验分享、软实力提升、找工作如何套磁如何networking、个人的转专业与求职道路经历分享,等等,如果各位看官有兴趣,请有米的捧个米场,多多写回复。如果受欢迎的话,我继续更。)

8#
 楼主| 发表于 2019-2-25 13:11:05 | 只看该作者
转码的门槛其实是很高的,一般搞data的人根本没有那个软件工程的思维。

很多所谓data专业出来会些一点代码的,那些代码大都惨不忍睹,只能算作coding,不能算programming,更谈不上software engineering,可维护性和扩展性都很差。而现在data一些工作已经轻松达到了十万,十五万,乃至二十万的水准,非常有竞争力。这给了无数编码硬实力不太行的人很好的职业机会。等真正做data工作的时候你就会发现,很多data的工作其实都是story telling,甚至是纯的business。会讲故事的人,手下顾两个analyst做模型写代码,自己完全不用动手,只要能说出花儿来,反而升职更快。以至于现在很多技术不强的人都争先恐后地去钻data的专业。有不错的薪水和职业前景,又不需要额外地钻研技术,干嘛那么费劲转码呢。

你有机器学习的背景以后又读cs,可以做machine learning engineer,个人认为这比纯data的要好的多。现在data的专业太鱼龙混杂了,用sql调调数据做个visuaization就敢说自己搞过人工智能大数据机器学习,这个泡沫早晚会破。https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=314294&extra=&page=2
想问下美国cs类码农工作大概有几个方向,还是只有sde
9#
 楼主| 发表于 2019-3-20 06:06:41 | 只看该作者
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=99872&page=1#pid1335399
W大响应并且为了攒RP拿更好的offer,来地里说一说我作为一个本科学纯文科的人,是怎么在美国找到CS工作的。

先自报背景:我是一个纯文科女,纯到什么程度呢?连最基础的高数都没有修过,计算机知识仅限于高中学的VB
大三的时候,被男朋友带上了贼船,他问我想不想在美国找工作,我说想,他说那你学CS吧,不然钱就打水漂了。
于是我就以刚刚会写“hello world”的零基础来了美国读了MIS。幸运的是,专业课程比较水,对于我这种基础的人来说可以跟得上,更重要的是我们专业没有选课要求,我就选了一些CS系的基础课,然后开始刷题
刷题刷的很痛苦,一道题要抠一天也没有个头绪,在当我cc150刷了两遍,leetcode只刷了一半的时候,拿到了一个中等公司的offer,自然不能和FLG比,但对于我一个文科生,已经相当幸运了。地里有很多人说想转CS但是有各种顾虑也毫无头绪,于是我就冒出泡来给大家鼓鼓劲。CS是肯定可以转的,而且没有你们想象的那么困难。

下面谈谈我个人的一些感受。注意,以下这些不一定(或者绝对不)适合CS科班出身的人,可能也不适用学EE或者相近工科的转专业者,对于和我一样的人,可以参考:
1. 我认为最重要的CS基础课:一门编程语言,数据结构,加上一门技术,就够了。这门技术可以是数据库,可以是web前端,可以是安卓开发等等。我是零基础的底子,操作系统和网络的课学起来太吃力,就都没学,于是我就学了一些web前端和数据库。后来证明,就算这样照样可以拿到面试,你只要证明你会CS的一个领域就够了。对于转专业的人,拿到面试是最重要的,拿到以后就看你刷题的表现了。当然,给我offer的这个公司只考了比较简单的算法题,除此之外倒是问了我很多知识性问题,所以这就是为啥我觉得会一门手艺很重要。
2. 不要过分担心你是转专业的。的确,你的教育背景是很差,和cs专业八竿子打不着,但是你可以通过project和其他相关经历来弥补。没有实习,就多做project,写在你的简历里面,做的越多,你就越像学CS的了,投简历时底气也会更足了。那这些project去哪里找呢?如果你没有上过cs系的正规课,也可以从coursera和其他公开课里面找project自己做
3. 要早投简历,把握住学校的job fair,不要耗着等到把题刷好再投。这一点很重要,我们因为这个失去了很多面试机会。最开始我们一直不敢投简历,尤其是大公司,就怕很快来了面试,错过机会。后来等我们投的时候,很多公司都招满了,直接给我们发拒信了。
事实上,如果你早投简历,很多公司会处理比较长的时间才给你面试。而且面试有很多轮,战线也很长,你甚至可以拿到第一轮面试后再疯狂抱佛脚刷题。把握好时间,在你觉得自己完全准备好的一个月前,就可以投了
4. 这一条是专门给转专业的,刷题刷的很痛苦的人看的了:如果你只想找一份还不错的cs工作,不求进多好的公司的话,不是每一个公司都会考很难很变态的算法题的。我终面面3轮,只写了两道很简单的算法题,剩下的时间都在回答一些技术性的问题,然后深入的和他们讲了讲project和实习经历。所以转专业的人,要对自己有信心,题是一定要刷的,但是如果那些很难的题你真的不会,你也不要太气馁,毕竟你想去的公司可能不会考这么难的。
5. 对于本科非CS,研究生想来美国找CS工作的人的一条建议:如果你申请不到很好的学校,至少要申请上一个和CS沾边的专业。还有,地理位置非常非常非常重要。
希望这个帖子能够激励所有转专业的人,不要迷茫,不要气馁,像我这样的纯文科女都找到了工作,我相信每一个人都能找到很好的CS工作的!!



10#
 楼主| 发表于 2019-3-20 06:12:26 | 只看该作者
https://www.1point3acres.com/bbs/home.php?mod=space&uid=123113&do=thread&type=thread&view=me&from=space(可以是refer的?)你看大部分google面经都能自己做出来了就可以投了  越好的公司越要放到最后面试。
系统并深入的学习了Java: 熟练并且深入地掌握一门oo编程语言对于找工作的重要性不言而喻哦。
2) 数据库以及web development知识。
3) OOdesign的知识好好学了一下,比如head first那两本:一本design pattern一本oo design 我都看了,并且还记了笔记。
4) 找其他学校同学要来的比较有料的software engineering course project若干,并且亲自动手design/implement了其中几个Project。这个过程还挺有收获的,同时也给简历上project那块加了几笔。
5) 网上看了一大堆关于system design的东西,google三驾马车之类的。最后的感受是system design new grad一般考得不多,就算考也应该只是最基本的。
总之这半年来一天学个10多个小时也算家常便饭。
. From 1point 3acres bbs
3. 说说我是怎么刷题的
我非常认真地刷了2.5遍leetcode,2遍cc150,并且每刷一遍都仔细做了总结。我这里核心在‘认真’两字:如何能够更加深入的理解算法的本质,提升自己举一反三的能力,以及不断总结自己犯的错误,不断提高代码质量。这就好比两个人虽然都声称自己刷了2遍leetcode,但一面试起来,两个人对算法的理解程度,做题的速度,以及举一反三的能力肯定是不一样的。比如说我周围的一些小伙伴时常会抱怨自己lc已经刷n遍,但面试题还是没见过/太难。但是其实仔细一分析,所谓的没见过的难题只是样子唬人,而本质只是原体变形而已,解决的思路都是想通的。我的做法是每做一道题都要不仅知道怎么解,还是知道为什么能想到这么解,以及有没有优化代码的一些小技巧。做多了你就基本上可以把leetcode题进行分类:比如哪些题都用了哪些通用的技巧…


4.      两条投简历的原则
1)     越好的公司越要放到最后面试。因为你每面试一次,尤其是onsite,基本上会都有新的感悟,都会发现自己之前准备上的不足,而这个过程本身就是一种提高,所以说基本上是越面越强的。
2)     投简历也要抓住时机不要错过机会:许多大公司招new grad都是在某一特定时间内,过了这段招满了就不招了。今年的例子比如微软思科雅虎。这三家公司我都没拿到面试。不过好在flg都是全年招人的。
以上两条有些情况下是矛盾的,所以需要你来在这两个原则中做出平衡。

5.      大公司尤其是FLG招newgrad看什么
这个我一会但开帖说说自己的感受。
您需要登录后才可以回帖 登录 | 立即注册

Mark一下! 看一下! 顶楼主! 感谢分享! 快速回复:

手机版|ChaseDream|GMT+8, 2024-12-1 19:03
京公网安备11010202008513号 京ICP证101109号 京ICP备12012021号

ChaseDream 论坛

© 2003-2023 ChaseDream.com. All Rights Reserved.

返回顶部