北理,大一,转CS专业失败,要不要复读转口腔?

[复制链接]
查看3150 | 回复0 | 2021-10-5 18:38:51 | 显示全部楼层 |阅读模式
希望你能选一个你喜欢,且能给你带来好的就业保障的专业。$ M% n% Y6 d" c9 i  P
% R' o5 X- G* N5 l( ~2 V; L
口腔是你真正喜欢的专业吗,你深入了解过这个专业没?别重新考进去之后,你发现和你想要的也不一样,避免变成西西弗斯的故事。
5 w1 {3 @8 n2 t4 {0 ?  D+ S我来给楼主一个新的选择方向吧:
  D/ T* P) A2 A& Y- D) H* s( p0 M选择可分流的专业里面和CS最接近的一个,最好就是要求有很多编程要求的那个方向。' {' C: K6 O( }! h
1 ~+ ^6 I! T% B) u: l5 z6 @
然后保持你的高GPA,本科毕业就申请出国读CS。0 Y( b6 G( T% r/ C! E) [' R
同时自学CS的核心内容,然后利用课余时间多写计算机相关的项目,当然也可以在接下来的专业里面,联系相关实验室,能参与他们编程相关的项目就更好了。  r9 ~& S9 s! p8 |' a- Y
君不见,很多CS编程牛B的,其实都是自学的,北美更是全民转码,我就不细说了。其实不少人,并没有系统上过课,但不妨碍他们通过刷题,刷CS相关的项目,找到一份温饱线以上的工作。& J% S/ \/ j3 m8 l( ^, N! `) P
我觉得复读不是好选择,因为你不能保证复读就一定能去你想学的口腔专业,高考一年一个样,你不知道明年又是个什么样的行情。3 n  G! R, f; ^- N

4 W0 r5 a" Q! I$ o其他答主也说了,求学或是追求事业,往往都不是一步到位的。而且呀,你现在学一些非CS的专业,能培养你不少CS之外的思维。将来你要是通过自学进入CS行业,没准你会有更多的机会。因为你会跳出框子看问题。也可以算是塞翁失马呢。
8 m4 r  y4 p' `/ ^, M自学CS的话,你就去问一下你学校的CS系的同学或是老师,搞一份他们的培养计划,他们的数学物理知识的课程,你也是一样要学的,这些不用刻意准备。就看他们学哪些计算机相关的课程。
9 X0 N+ b: C7 r/ [$ E据我所知,大学的计算机课程,最核心的就是这些课:数据结构和算法,操作系统,组成原理,网络系统,数据库系统。. K( c& F$ r) {6 w

; H, j* k! c+ }1 v现在的学生很幸福的。还记得之前一个问题问,如何看待大学生从B站毕业?问题是说很多人都是通过B站来学习,复习考试而毕业。
# @7 w: X4 ?9 ~( m6 y  ?我想说的这,正是有了B站类似的这些平台,可是给我们带来了超级多的好处。以前想学好学校的资源,我们最多估计就是看看人家上课用的书。现在好了,书我们可以买到,课程也直接搬到了网络上了。只要你愿意学习,国内外顶尖大学的无价学习资源尽在你手指翻滚之间,别提有多方便。
# @; ?; \$ Y/ T. W; }; y更别说MOOC平台上茫茫多的优质网课,等待着大家的认真学习。" N6 E" Q. r! B9 \
这里我就强调一下,我们所在的这个时代,可以选择的东西太多了,诱惑了边得触手可及,一定要有一个详细可行的机会,学哪些课程,哪些学校比较好,每天学多久这样的事情,一定要有一个明确的目标。千万千万别听这个说那个课程好,就想跟着学一波。另外一个人说,哪里又来一个课程很不错,你又想学。
* \5 p* ]4 K; n/ Q+ Z% V一定要好好规划,并执行好自己的学习目标,有的放矢。
5 r$ `: \! Q+ K$ u+ r5 {  H0 n总之,就是保证高GPA,同时别放松CS的学习,然后还有一点就是准备托福,GRE,如果你选择出国的话。8 T+ Q  J: d. k- O  ?) c8 q( {
其实自学CS也完全能在国内找到一份很不错的工作的,这就要看你个人的选择了。
$ u% k9 ^; @( m! \<hr/>自学CS的话,里面最最重要的课程就是算法和数据结构了,尤其是你打算来美国读CS的研究生的话,这两门课可以说是找工作的分水岭。' o. e- k8 ~3 a  F! {* d; t
我在这里就分享一下我自己是如何自学这两门课的。其他的计算机科目,你可以借鉴类似的方法。
$ Z& a  ^* Z) [' D) G) u8 |- k下面的内容来自回答:; v+ H7 T0 M) _; S
<hr/>既然想要系统地掌握算法和数据结构,那自然是要看书,上课,和练习相结合。- b7 p$ O% ~; r2 ^" J
三管齐下,缺一不可!
% w3 @- P  J3 p% o: V( u所以我从三个方面来讲一下。先是书籍推荐,再是网课选择,最后是练习平台。* N/ [% Q% D- b! T% U0 d* _
只有转化成了你代码的算法和数据结构,才是掌握了的算法和数据结构!0 E$ P9 `& M% F- v! _. _3 ~' }  y3 ]
<hr/>先来看有哪些书籍推荐4 [0 p/ Y2 z# x+ v. b* z& n  ~7 d

, E; s& v. A- y书挺多,但经典的也就那么几本,而且我建议选定一本之后,看多遍。而不是看好几本书,每一本都走马观花过一下。) a* {% ^' R  t% `- p
首先是算法方面算法和数据结构是计算机学习的基石。无论你学习计算机的任何方向,没有扎实的算法和数据结构,肯定学习起来就捉襟见肘了
7 q- y2 _. C$ b) T1 s3 e9 K9 Z6 k我自己非常喜欢的普林斯顿算法红宝书 第四版,这本书是普林斯顿超级大神教授Robert Sedgewick的神作,该书还有配套的MOOC课程,以后有时间再写网课了。该书是特别棒的算法和数据结构的教程,全书提供Java的实现,而且大部分内容也放在了本书的配套网站上:https://algs4.cs.princeton.edu/home/ 本书的优点是会把算法详细的过程掰开揉碎地讲明白了。书里面有大量的配图,更不说配套网站上的ppt,简直就是艺术。一句话,1万分推荐。就一个缺点,没有讲动态规划(DP),所以我在下面也推荐一些涉及到DP的书籍。你认真读此书的话,会发现很多大公司的面试题就来自它的习题里面。
2 E4 c3 q6 c& C" O3 b: V: Y( X. I  w" W4 s
北理,大一,转CS专业失败,要不要复读转口腔?-1.jpg + [8 K1 d, m7 k4 F) N7 B/ V8 `: c

( Z% i/ t* K( p  J% u还有另外一本算法神作就是算法设计手册了。这一本则是把算法分类了,还提供了特别多适用的算法应用场景,让读者知其然,并知其所以然。这本书的数和图部分,还有递归回溯,是特别多人拍手称赞的地方,值得认真看三遍。这本书就讲了第一本里面遗憾缺失的DP。总之,这两本都是超级强推。5 x- c$ P* g6 `6 r

1 S4 R5 U0 X( V. @  X) C 北理,大一,转CS专业失败,要不要复读转口腔?-2.jpg 5 Q4 V9 v! v# e8 _
6 q7 E# D9 F. l. `" ^
前Google大佬,Steve Yegge非常推荐的计算机书籍之一:
2 v+ y7 _& S$ O* k! f( s" i* r, J# I5 ~) n* R6 y% x1 E( s5 K" v/ M6 ^, S; e" C
北理,大一,转CS专业失败,要不要复读转口腔?-3.jpg
# w6 ^8 |' C  k6 `有时间的小伙伴,他的这篇博客很值得一读:http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html。 Google的Interview Guide,很多就出自这篇博客。. t# c+ l* t: l: d$ s
提到算法,肯定会提到算法圣经之算法导论,这本书是算法百科全书,优点是全,缺点是太全太厚,数学太多了。是很好的参考书,但不适合短期突击学习。感兴趣的读者可以挑战一下。
5 s' j; c: V- n8 D0 w. i$ U1 i9 j, D6 W- v& S
北理,大一,转CS专业失败,要不要复读转口腔?-4.jpg   n( {* X" ]& f# C2 w+ m
' t4 v. k; S2 ]' M( S( {' u' K  @
接下来的两本,可以当做是算法的课外读物,写得浅显易懂。刚开始学算法的小伙伴,可以先从他们着手,第一本其实是合集,叫Algorithms Illuminated分三个部分:基础,图算法和数据结构,贪心算法和DP。该合集页数比较短,但是看完之后,对算法的理解肯定会加深不少。
; X9 X, U, c& W( Y$ K这个系列暂时还没有中文翻译,但Coursera上面有这个算法系列的课程:Learn Data Structures and Algorithms from UCSD/HSE on Coursera* }4 z1 D) E5 p2 F" a6 P) ~
提到Coursera的课程,就多说一句,现在最火的Machine Learning的课程在这里:Andrew Ng' Machine Learning: Master the Fundamentals
3 f5 r+ @0 }! ~: K2 u接下来就是图解算法了,语言风趣,有比较多的插图。入门很合适。
* K% G! e$ a6 O  i2 K( B* z最后一本算法书,名字就叫算法,作者还提供免费的教程,我个人觉得对面试帮助很大。因为里面讲解算法的思路,有点以题目为导向的感觉,其中递归和DP部分,让我有醍醐灌顶之感。
% Y8 m! i2 T0 I% a, f$ S# C( \
/ Z$ A+ n' _) d1 j9 w, Z+ L 北理,大一,转CS专业失败,要不要复读转口腔?-5.jpg
( E( S4 H1 ?- I. ?可以通过下面的链接,直接官方下载PDF:
& t* U: [. q# s, J5 G/ r
, ?9 v4 A8 a6 X/ B0 `第二部分是数据结构,这里就推荐三本书,一本是Java,一本是Python。Java的就是鼎鼎大名的CS61B的课程推荐教程:Data Structures and Algorithms in Java。Python的也是一本畅销书:Problem Solving with Algorithms and Data Structures Using Python
9 S, `6 m+ u9 @- l# z$ F  w( @$ B: N
北理,大一,转CS专业失败,要不要复读转口腔?-6.jpg 6 [: b9 ?: E% ^9 f- c" s

) H% W5 B3 ~* }4 I. N4 w, }( v: c7 k 北理,大一,转CS专业失败,要不要复读转口腔?-7.jpg   i1 o9 I/ @0 O/ U0 R  |6 }
4 ~! c2 {3 O* Z( M6 A) b" p
还有就是中文的《大话数据结构》,数据结构中文入门读物的不二选择。/ B5 j, _4 x* I$ w

) b( Y0 M  e8 i8 O4 l% L8 _ 北理,大一,转CS专业失败,要不要复读转口腔?-8.jpg
, L6 `8 R+ X5 t
4 d/ O4 i/ x; A/ V<hr/>再来看网络课程。5 N! v" J6 H/ M4 {+ J% ?
1 s3 g' f0 F% a0 l
算法课程强推四门。3 s: a: |6 f+ j' B, x
Again,选一个好好多学两遍,别都想学,没那么多时间,贪多嚼不烂。
# V+ x6 E. F5 m5 {. d: B网络课程的话,则是十二分强推UCB的CS61B。他们家的计算机系的CS61A,B,C课,简直制霸各种课程推荐列表。
4 x, S8 W: g2 t
    CS61B的官网在这里:https://inst.eecs.berkeley.edu/~cs61b/fa19/ 这门课以Java为主。
    9 K. G# J# G* g# T* x/ b. x  z
2. MIT的算法课,教程用的算法导论,也是强推的网课:https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb 这门算法则基本不涉及到语言层面,主要是算法层面,讲得很好。: R" [2 [) n* X7 D$ K' y
3. 然后就是红宝书的网课以及配套官网:
- X; B8 g& }. thttps://algs4.cs.princeton.edu/lectures/! A4 J8 E$ I& n: o1 U$ j% f- f' d
https://www.youtube.com/watch?v=1QZDe28peZk&list=PLRdD1c6QbAqJn0606RlOR6T3yUqFWKwmX
8 A5 h- Y2 I9 R4. 斯坦福2018 Winter CS106B: Programming Abstractions,虽然从名字不太能看出来,但其实是用C++讲数据结构,想用C++的小伙伴不容错过,我看了一半了,特别有帮助,尤其是对递归和回溯的讲解,简直醍醐灌顶。
  q3 b" n2 k9 A  ^% q/ d现在因为不可知的原因,Youtube上面已经下架这门课程,但更方便的是,咱们可以在B站直接看:( O% @' V/ y" ^) m# ]* ~
https://www.bilibili.com/video/av21620553?p=1
2 v, a5 ?2 w8 w& N1 }& \% ?# C+ p<hr/>最后来说说练习平台
9 V& X' F6 p9 e- m% a7 F& D( x3 J) b" R$ J3 ]) U
光学(看书)不练,算法和数据结构是学不会的。" \- g0 a7 v9 {, B
所以推荐一些好的刷算法和数据结构平台,当然另一方面也是为了找工作面试做准备咯。; p% i2 |. y) Z; ^/ T: @. o
如果你在北美的话,初级程序员面试基本就是考察数据结构和算法,所以大家一定要勤加训练!0 P9 u8 y( @6 @) E
    LeetCode。4 H" h# c- ?+ P) K
这是现在刷题找工作最热门的网站了。, i3 t. T# g: X9 D5 L
但LeetCode现在题目也太多了,一共1300+了,而且一直在增加!!!$ e9 _* m+ m- F2 f3 s1 m
全刷完没必要,也不高效,所以推荐看下面的回答:
: l9 G( h. \6 P% B  w* G3 ^国外LeetCode大牛们是怎么刷LeetCode的:: T8 P9 {+ R7 F! W! x0 B; i. d
LeetCode 2019官方精华经验合集在这里:
# Y2 H' R, t7 ^( }8 [; @<hr/>2. Educative6 N% U" t! O& R+ |5 m
他们家还给Github的学生账户提供半年的免费课程,满足条件的小伙伴,可以照着下面的文章流程申请一下,有更详细的课程和相关步骤介绍:
- W) X: o6 B+ b: e# j3 N对算法最有帮助的课程是:
  o) d! z, q8 R- |" n上面这门课的理论和题目结合则阅读这一篇:
! I5 d% |, C( q专门针对数据结构的课程有:
; D  I1 X8 \7 `C++:9 K) r3 H% f7 O
JavaScript:! W8 n" ~& r6 |* W4 m4 ^: P" Q- Y2 Z
Java:% ~6 q$ o  ~1 ~) Y/ m
Python:; [. @, q' B- Z
我上过其中的Java版本,课程是把数据结构里面的基础数据结构都用java实现了一遍,对于用java的同学特别有帮助,java的基础在刷题的过程中,还是要必须掌握的。
' ?1 Y* S$ H. B/ R+ l6 V& M课程从复杂度开始讲起,Arrays,LinkedLists, Stacks/Queues, Graphs, Trees, Trie, Heaps, Hash Tables等数据结构,全都实现了一遍。而且还有配套的基础LeetCode题。是一个入门的很棒的教程。选择其他语言的话,内容应该也是差不多的。* ]. E8 E' X9 ~- Q4 B
动态规划的题目,则单独成为一门课了:
( B: e6 `6 a8 ?3 a<hr/>以上只是给出一个完整的学习算法和数据结构的攻略,包括书籍选择,网课学习,平台练习。其他的科目,也自然是类似的流程。如果你真心想继续在CS耕耘,那你肯定也能找到别的科目的好的教程,网课,以及练习相关的资源。& z" I) F3 w3 I
希望你能选一个你喜欢,且能给你带来好的就业保障的专业。
5 G( K6 l+ `1 G; s- N' f毕竟读书(读大学)不仅仅是为了兴趣,毕业能恰饭也是值得认真考量的。" w6 G6 C1 [! b
共勉。
半天半地蕾 | 2021-10-6 04:36:03 | 显示全部楼层
希望你能选一个你喜欢,且能给你带来好的就业保障的专业。4 {; o2 S5 ^( m; X
1 R) }; d6 ~! j1 N0 j
口腔是你真正喜欢的专业吗,你深入了解过这个专业没?别重新考进去之后,你发现和你想要的也不一样,避免变成西西弗斯的故事。" r+ f5 f$ F% X6 N( v0 f* m9 s
我来给楼主一个新的选择方向吧:
4 K, R! L/ ~$ b) T8 J选择可分流的专业里面和CS最接近的一个,最好就是要求有很多编程要求的那个方向。  f2 L" L: _9 Y: _

, f. J8 A0 `0 }* r( A6 c然后保持你的高GPA,本科毕业就申请出国读CS。$ G! ?( v5 e% w% m7 `
同时自学CS的核心内容,然后利用课余时间多写计算机相关的项目,当然也可以在接下来的专业里面,联系相关实验室,能参与他们编程相关的项目就更好了。
& J! V+ F1 b# U* F  ^9 H君不见,很多CS编程牛B的,其实都是自学的,北美更是全民转码,我就不细说了。其实不少人,并没有系统上过课,但不妨碍他们通过刷题,刷CS相关的项目,找到一份温饱线以上的工作。
* _, ?3 L/ r/ t- H8 V$ `/ s  L5 T我觉得复读不是好选择,因为你不能保证复读就一定能去你想学的口腔专业,高考一年一个样,你不知道明年又是个什么样的行情。; _/ a' D8 m3 ~3 E1 N- s! ]% |9 K
, C. K8 n" k" j7 S0 o
其他答主也说了,求学或是追求事业,往往都不是一步到位的。而且呀,你现在学一些非CS的专业,能培养你不少CS之外的思维。将来你要是通过自学进入CS行业,没准你会有更多的机会。因为你会跳出框子看问题。也可以算是塞翁失马呢。, S: ^0 C( |6 d: O* H) J- F6 ^
自学CS的话,你就去问一下你学校的CS系的同学或是老师,搞一份他们的培养计划,他们的数学物理知识的课程,你也是一样要学的,这些不用刻意准备。就看他们学哪些计算机相关的课程。1 T) a% n0 |. l9 Z; e+ D/ p
据我所知,大学的计算机课程,最核心的就是这些课:数据结构和算法,操作系统,组成原理,网络系统,数据库系统。5 Y4 t: [" W/ X2 C& I

/ {8 ?& B6 C) ~1 y/ T0 H现在的学生很幸福的。还记得之前一个问题问,如何看待大学生从B站毕业?问题是说很多人都是通过B站来学习,复习考试而毕业。, g* P0 F) R. A
我想说的这,正是有了B站类似的这些平台,可是给我们带来了超级多的好处。以前想学好学校的资源,我们最多估计就是看看人家上课用的书。现在好了,书我们可以买到,课程也直接搬到了网络上了。只要你愿意学习,国内外顶尖大学的无价学习资源尽在你手指翻滚之间,别提有多方便。
: ~* D* g8 T+ X% m- |6 F更别说MOOC平台上茫茫多的优质网课,等待着大家的认真学习。7 H9 v6 |8 i7 h( O1 h
这里我就强调一下,我们所在的这个时代,可以选择的东西太多了,诱惑了边得触手可及,一定要有一个详细可行的机会,学哪些课程,哪些学校比较好,每天学多久这样的事情,一定要有一个明确的目标。千万千万别听这个说那个课程好,就想跟着学一波。另外一个人说,哪里又来一个课程很不错,你又想学。
* g" |7 q7 O5 z一定要好好规划,并执行好自己的学习目标,有的放矢。6 r7 G; X% U% N3 N9 p, H0 Z9 y
总之,就是保证高GPA,同时别放松CS的学习,然后还有一点就是准备托福,GRE,如果你选择出国的话。# f5 S0 c) ], i' f5 _
其实自学CS也完全能在国内找到一份很不错的工作的,这就要看你个人的选择了。. ]5 \. S4 Z$ X
<hr/>自学CS的话,里面最最重要的课程就是算法和数据结构了,尤其是你打算来美国读CS的研究生的话,这两门课可以说是找工作的分水岭。4 \% r' e5 z0 J6 a8 Y* v
我在这里就分享一下我自己是如何自学这两门课的。其他的计算机科目,你可以借鉴类似的方法。
3 Y: G0 ~# H5 A$ e下面的内容来自回答:
( X9 \2 j- W, m9 J* B哪本《数据结构与算法》最好?<hr/>既然想要系统地掌握算法和数据结构,那自然是要看书,上课,和练习相结合。! z) F5 D( ]% e. ]/ X2 u2 c/ ?% h
三管齐下,缺一不可!$ r* w1 l+ a7 V
所以我从三个方面来讲一下。先是书籍推荐,再是网课选择,最后是练习平台。
" _% b9 a3 Q# `3 }0 o7 v/ W% D只有转化成了你代码的算法和数据结构,才是掌握了的算法和数据结构!
2 n8 `8 Z, I. D6 g& H  T, ^! M<hr/>先来看有哪些书籍推荐1 Q  h( K0 ?( i9 o. I& u

/ S- d: t6 u1 }6 j( X4 e书挺多,但经典的也就那么几本,而且我建议选定一本之后,看多遍。而不是看好几本书,每一本都走马观花过一下。
" P0 G9 P0 n5 i3 E# m首先是算法方面算法和数据结构是计算机学习的基石。无论你学习计算机的任何方向,没有扎实的算法和数据结构,肯定学习起来就捉襟见肘了
" V  d' j& T. u: H$ w4 H我自己非常喜欢的普林斯顿算法红宝书 第四版,这本书是普林斯顿超级大神教授Robert Sedgewick的神作,该书还有配套的MOOC课程,以后有时间再写网课了。该书是特别棒的算法和数据结构的教程,全书提供Java的实现,而且大部分内容也放在了本书的配套网站上:https://algs4.cs.princeton.edu/home/ 本书的优点是会把算法详细的过程掰开揉碎地讲明白了。书里面有大量的配图,更不说配套网站上的ppt,简直就是艺术。一句话,1万分推荐。就一个缺点,没有讲动态规划(DP),所以我在下面也推荐一些涉及到DP的书籍。你认真读此书的话,会发现很多大公司的面试题就来自它的习题里面。. Z! J- n+ h9 V0 s$ i

# H4 |7 ?; ^8 [+ S4 V
& L7 o8 Y. y4 [3 d  y/ K3 r! s1 E$ ]/ K
( t1 j$ A& S( Z" f+ \# p/ D8 h( L

/ {3 }! k+ O% i! r% R" g9 F: _* K# q
还有另外一本算法神作就是算法设计手册了。这一本则是把算法分类了,还提供了特别多适用的算法应用场景,让读者知其然,并知其所以然。这本书的数和图部分,还有递归回溯,是特别多人拍手称赞的地方,值得认真看三遍。这本书就讲了第一本里面遗憾缺失的DP。总之,这两本都是超级强推。
* S* g) g; p( X+ y+ ~3 K! d
8 R, f( g5 P3 a+ r' R! j% J+ N4 \% U! O  s" z) g: J

2 c0 L& T! K) B, s0 T, c2 Z$ }前Google大佬,Steve Yegge非常推荐的计算机书籍之一:  {( t6 C" G* _9 h: {" b: ^% D% f
3 ]6 e) {6 Z$ ?% S- m9 U( c
# P* e: J8 r1 @- L& [% H
有时间的小伙伴,他的这篇博客很值得一读:http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html。 Google的Interview Guide,很多就出自这篇博客。
: E- b  {8 a5 S+ Y* @4 Y+ L. }1 `提到算法,肯定会提到算法圣经之算法导论,这本书是算法百科全书,优点是全,缺点是太全太厚,数学太多了。是很好的参考书,但不适合短期突击学习。感兴趣的读者可以挑战一下。3 @6 B9 W' a; @$ j, \* f& K

; M; o" Z6 L  Y2 q& [& b# {- E- L- i/ E; C! e9 I7 J) M7 L# M( P! H
% X6 N/ ~: o3 r6 }
接下来的两本,可以当做是算法的课外读物,写得浅显易懂。刚开始学算法的小伙伴,可以先从他们着手,第一本其实是合集,叫Algorithms Illuminated分三个部分:基础,图算法和数据结构,贪心算法和DP。该合集页数比较短,但是看完之后,对算法的理解肯定会加深不少。+ H( p6 @+ G' l* h  `) i
这个系列暂时还没有中文翻译,但Coursera上面有这个算法系列的课程:Learn Data Structures and Algorithms from UCSD/HSE on Coursera
( F' U" I. E) A* b. _0 K提到Coursera的课程,就多说一句,现在最火的Machine Learning的课程在这里:Andrew Ng' Machine Learning: Master the Fundamentals
% ^! B" E1 c4 k0 [$ o6 h1 P8 G接下来就是图解算法了,语言风趣,有比较多的插图。入门很合适。
+ i5 U( M" B8 I+ K# w" ~最后一本算法书,名字就叫算法,作者还提供免费的教程,我个人觉得对面试帮助很大。因为里面讲解算法的思路,有点以题目为导向的感觉,其中递归和DP部分,让我有醍醐灌顶之感。: @  r9 L; W1 U1 i3 c  a8 g' E
' ]  O% t" Z8 ]( |
# B. m! k9 c! u/ g8 G8 @) n, p. W
可以通过下面的链接,直接官方下载PDF:5 r, d" O6 _7 F: @
by Jeff Erickson
" X  U, |' d2 u3 V第二部分是数据结构,这里就推荐三本书,一本是Java,一本是Python。Java的就是鼎鼎大名的CS61B的课程推荐教程:Data Structures and Algorithms in Java。Python的也是一本畅销书:Problem Solving with Algorithms and Data Structures Using Python
) F( g. m0 \/ n7 E) z0 p, d8 M( Q5 z7 Y% _6 n  `. Q1 ~
1 J" {" K2 v- B  h3 i+ x1 ?
0 n& @  j' |9 q' A& A$ Z

8 [; `! K! g+ z8 M2 `: G9 i& a* }! A3 m# b' ], F
9 B% T3 {8 s7 a" {$ W2 x1 K
还有就是中文的《大话数据结构》,数据结构中文入门读物的不二选择。
& Z" `- |2 |0 n$ o( l: V) l
0 S2 F) }4 W; k) E
" t; K0 R& U' c" C

6 ^+ w& Y& |( a  `: b" A: [1 a* ^: W) V/ ]/ Z% ~7 D2 S9 A6 h
<hr/>再来看网络课程。, K8 s/ Y- T7 x2 s: m3 B, n

4 @2 e0 `! h" k9 W算法课程强推四门。- z  X3 z: k! B6 r/ R9 r' ~
Again,选一个好好多学两遍,别都想学,没那么多时间,贪多嚼不烂。* `/ }4 A; g1 |- r& w% i+ N) T  G
网络课程的话,则是十二分强推UCB的CS61B。他们家的计算机系的CS61A,B,C课,简直制霸各种课程推荐列表。) }; d; V; b; U* \
    CS61B的官网在这里:<a href="http://link.zhihu.com/?target=https%3A//inst.eecs.berkeley.edu/~cs61b/fa19/" class=" external" target="_blank" rel="nofollow noreferrer">https://inst.eecs.berkeley.edu/~cs61b/fa19/ 这门课以Java为主。* N: l$ W' Q- h5 t% m7 G
2. MIT的算法课,教程用的算法导论,也是强推的网课:https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb 这门算法则基本不涉及到语言层面,主要是算法层面,讲得很好。* D* E6 G2 ^! M* G
3. 然后就是红宝书的网课以及配套官网:
( D: u5 a9 c7 b0 [( Whttps://algs4.cs.princeton.edu/lectures/1 e2 V' {- w. Y
https://www.youtube.com/watch?v=1QZDe28peZk&list=PLRdD1c6QbAqJn0606RlOR6T3yUqFWKwmX9 r+ S% J- v5 ?2 x( F
4. 斯坦福2018 Winter CS106B: Programming Abstractions,虽然从名字不太能看出来,但其实是用C++讲数据结构,想用C++的小伙伴不容错过,我看了一半了,特别有帮助,尤其是对递归和回溯的讲解,简直醍醐灌顶。
8 v3 o2 R/ F! p/ b- Q" p* b$ O现在因为不可知的原因,Youtube上面已经下架这门课程,但更方便的是,咱们可以在B站直接看:4 _9 B) U: F- E- k- j7 }
https://www.bilibili.com/video/av21620553?p=12 N* y  X% e: u5 f/ D) ]( V
<hr/>最后来说说练习平台
' y5 H+ k8 b% B2 ?6 S) P
" G; T$ e' M. K5 s& Z9 ^$ z9 d+ w光学(看书)不练,算法和数据结构是学不会的。8 |' @* x! L5 G9 Y7 |
所以推荐一些好的刷算法和数据结构平台,当然另一方面也是为了找工作面试做准备咯。  V$ @4 _% H: n; @& L% V  A
如果你在北美的话,初级程序员面试基本就是考察数据结构和算法,所以大家一定要勤加训练!
* z5 @' v6 G% y3 n2 j+ F) h( |
    LeetCode。
    ( s. N& F5 ~' n
这是现在刷题找工作最热门的网站了。
& w* h& i1 d1 H' U: T但LeetCode现在题目也太多了,一共1300+了,而且一直在增加!!!
% }$ }- J# }2 P2 X6 R全刷完没必要,也不高效,所以推荐看下面的回答:
( [# H8 q1 E# B* A0 ^2 f9 I3 x& T6 e大家都是如何刷 LeetCode 的?刷完LeetCode是什么水平,能拿到什么水平的 offer ?国外LeetCode大牛们是怎么刷LeetCode的:
: M' T1 [7 P' A& l' g6 V" b. X穷码农:LeetCode到底应该怎么刷?面试应该注意哪些问题?大公司到底怎么进?来看看LC大神们的刷题攻略!LeetCode 2019官方精华经验合集在这里:
# X* G: B* E6 v% Uhttps://leetcode.com/discuss/general-discussion/459286/Year-in-Review%3A-2019<hr/>2. Educative8 u: ~4 z7 I7 j
Educative: Interactive Courses for Software Developers他们家还给Github的学生账户提供半年的免费课程,满足条件的小伙伴,可以照着下面的文章流程申请一下,有更详细的课程和相关步骤介绍:
  K: ~9 t# o1 [) J  P穷码农:网课党的双重大福利!Github学生账号和Educative合作,总共2000美金的课程免费半年啦对算法最有帮助的课程是:
% d) A( o$ x% U" ?& Q* f+ i穷码农:别再埋头刷LeetCode之:北美算法面试的题目分类,按类型和规律刷题,事半功倍上面这门课的理论和题目结合则阅读这一篇:' N9 i" K0 K0 L. D0 S( F6 E
穷码农:LeetCode按照怎样的顺序来刷题比较好?专门针对数据结构的课程有:$ \9 O1 S% l0 {! r
C++:" p  z% i3 `  B5 ^: b8 Q
Data Structures in C++: An Interview RefresherJavaScript:
! J: R2 b" {- K2 `Data Structures in JavaScript: An Interview RefresherJava:
' r/ \0 t7 ]( h/ ]Data Structures in Java: An Interview RefresherPython:
  t7 U  T* L, w8 c8 N) Z( n" A+ `1 iData Structures in Python: An Interview Refresher我上过其中的Java版本,课程是把数据结构里面的基础数据结构都用java实现了一遍,对于用java的同学特别有帮助,java的基础在刷题的过程中,还是要必须掌握的。* G3 w& `9 |' q8 p" L, ]
课程从复杂度开始讲起,Arrays,LinkedLists, Stacks/Queues, Graphs, Trees, Trie, Heaps, Hash Tables等数据结构,全都实现了一遍。而且还有配套的基础LeetCode题。是一个入门的很棒的教程。选择其他语言的话,内容应该也是差不多的。- n; `* L0 N% [6 L
动态规划的题目,则单独成为一门课了:
: y. Y, W$ v0 N' {$ K+ L/ K2 }0 G穷码农:动态规划及面试,学完这一篇,你就入门了:Dynamic Programming, 动态规划,经典题目<hr/>以上只是给出一个完整的学习算法和数据结构的攻略,包括书籍选择,网课学习,平台练习。其他的科目,也自然是类似的流程。如果你真心想继续在CS耕耘,那你肯定也能找到别的科目的好的教程,网课,以及练习相关的资源。
/ l7 A2 x* u7 d$ m1 a希望你能选一个你喜欢,且能给你带来好的就业保障的专业。
8 l, |" n+ |+ a2 c% [4 F% h  x毕竟读书(读大学)不仅仅是为了兴趣,毕业能恰饭也是值得认真考量的。) b+ K8 ]$ Y& E5 w3 h, X4 G
共勉。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

206

金钱

0

收听

0

听众
性别

新手上路

金钱
206 元