打算下年去加拿大读it的college,去之前想尽快提前开始刷题和弄一个full-stack的个人网站用来展示自己的portfolio。 我目前打算看完berkeley的cs61ab,coursera的algo I&II就开始,这些知识够我开始用java刷essy的题目吗。 请问还要要学一点discrete math和object-oriented的概念吗。 谢谢大佬们


nmsl_hongdi · 2022-07-02 14:05:39 UTC · +3 · iektw0x ·

至少学点Java语法?

5akura · 2022-07-02 14:28:11 UTC · +1 · iekwom7 · OP ·

嗯嗯感觉要先搞清楚这个

nmsl_hongdi · 2022-07-02 14:29:32 UTC · +3 · iekwurm ·

discrete math和OO先别学 对刷题没有帮助

Ubengable_Weird_Ass · 2022-07-02 14:23:17 UTC · +29 · iekw1wr ·

建议先学JavaSE,过一遍JavaSE之后再学数据结构与算法(cs61b或者别的渠道),然后再开刷力扣,可以按频率刷,或者按leetbook专题(比如数组专题,链表专题之类的),有一定题量积累之后可以参与周赛,或者模拟面试这种相对更有时间限制紧张氛围的模式。

5akura · 2022-07-02 14:28:49 UTC · +5 · iekwrj8 · OP ·

很详细谢谢🙏

[deleted] · 2022-07-02 15:10:11 UTC · +5 · iel28nf ·

刷题顺序可以去搜labuladong

5akura · 2022-07-02 15:19:14 UTC · +2 · iel3gnm · OP ·

谢谢先收藏了

[deleted] · 2022-07-02 15:28:12 UTC · +2 · iel4ojf ·

我是网工最近刚转开发,也是刚开始学,OP共勉💪

whoooops- · 2022-07-02 14:38:06 UTC · +1 · iekxybj ·

cs61b在哪学呢

Ubengable_Weird_Ass · 2022-07-02 15:03:17 UTC · +2 · iel1a6t ·

油管上有一些Josh Hug教授上传的课程

whoooops- · 2022-07-02 15:29:18 UTC · +1 · iel4tv6 ·

好像不全呢

Ubengable_Weird_Ass · 2022-07-02 15:49:28 UTC · +4 · iel7k1b ·

https://www.youtube.com/playlist?list=PLgNUCz66KaWRSVzIeT_qB2yBgHocLmRWI

这有个合集,标题倒是声称complete

whoooops- · 2022-07-02 17:42:31 UTC · +1 · ieln361 ·

感谢

[deleted] · 2022-07-02 14:47:33 UTC · +3 · iekz7lh ·

友友们怎么看OO,我看现在 Rust 这些新语言都没有继承了

[deleted] · 2022-07-02 15:03:37 UTC · +4 · iel1byi ·

另外现在的Java开发是不是滥用了OO?看到现在CRUD的小项目都几十个class,看Spring源码里面的继承关系复杂到看吐了

springeverythingaaa · 2022-07-02 18:51:34 UTC · +1 · ielwfto ·

这个东西你经验多了就懂了。。。。现在可以先别管。

[deleted] · 2022-07-02 19:35:41 UTC · +2 · iem28hc ·

也许吧,我之前也写过C#,也没有这个问题, .NET自带的的依赖注入配置也比较简单

感觉是Java语言功能太少导致的,没有extension method是其中之一,C# 的类型系统也更强大一点(指能让泛型接口static dispatch),虽然比不过Scala的就是了

Dont_feed_theUnicorn · 2022-07-03 00:18:48 UTC · +1 · ien21ly ·

试试Golang?

[deleted] · 2022-07-03 01:52:26 UTC · +1 · iencqk1 ·

Go也没有extension method,Rust有extension trait

比起Go更想用Rust

Dont_feed_theUnicorn · 2022-07-03 02:02:18 UTC · +1 · iendumk ·

怎么大家都在promote rust,这下不得不学了😂

[deleted] · 2022-07-02 20:01:29 UTC · +1 · iem5k6n ·

Java还有一个设计得不好的地方就是Checked Exception,Spring把这些都包装成了Unchecked Exception,而Scala Kotlin Groovy都没有Checked Exception,所以感觉Spring这样复杂的设计目的之一就是为了绕过Java的一些限制

springeverythingaaa · 2022-07-02 20:04:04 UTC · +1 · iem5wc2 ·

我对这方面研究过一些,有一些感悟。我们可以探讨一下?私信你了。

zakura61 · 2022-07-02 15:42:39 UTC · +3 · iel6mug ·

Rust还是挺支持OO的,只不过继承换个了名字,把实体类和抽象类分开,还是OO那一套

zakura61 · 2022-07-02 15:43:08 UTC · +2 · iel6p7l ·

不过FP才是未来,Elixir大法好!

[deleted] · 2022-07-02 16:59:39 UTC · +1 · ielh5hc ·

https://queue.acm.org/detail.cfm?id=3212479

此文的作者也持这种观点,设想了一种为Erlang设计的计算机

[deleted] · 2022-07-02 17:01:59 UTC · +1 · ielhha7 ·

我若既要用Java找工作,又要用FP,我是不是该看看Scala?

springeverythingaaa · 2022-07-02 18:52:03 UTC · +0 · ielwi70 ·

这个语言没有公司招

zakura61 · 2022-07-03 02:01:21 UTC · +2 · iendqrk ·

用java就别FP了

[deleted] · 2022-07-03 02:39:02 UTC · +1 · ienhyxf ·

你是认为非纯FP非FP?

[deleted] · 2022-07-16 14:49:45 UTC · +1 · igefakw ·

这几天玩了玩Elixir,和其他玩过的FP语言一样都大量使用Linked List而非Vector,我还需要时间接受,如果性能这个问题不解决FP能成为未来吗?

[deleted] · 2022-07-16 17:28:36 UTC · +1 · igf1jlq ·

现在发现了Gleam语言,和Rust有相似的语法,编译器也是Rust编写,静态类型,非纯FP,同样运行在BEAM虚拟机上,感觉是Rust with GC

zakura61 · 2022-07-16 18:27:56 UTC · +1 · igf9x8l ·

听上去是把Rust的优点之一给扔了

[deleted] · 2022-07-16 18:56:52 UTC · +1 · igfdyfu ·

有人用Go不用Rust就是因为Rust没有GC自动管理对象生命周期

基于BEAM等于附送了Goroutine等价物

Rust本身有第三方GC库,C/C++也有bdwgc,具体实现细节run后再研究

据传C# 12终于要加入 discriminated union,都是MS 家的,不知道为什么不让 F# 上位

.NET 个人感觉不错,工具链非常友好,但是 C# 感觉当年抄 Java 带来历史包袱太多,至今没有free function,想写procedure还得思考如何取类名,如何组织类,盼 F# 归

Anarco-Statist · 2022-07-02 16:32:58 UTC · +8 · ieldhhm ·

学个几把,当年搞竞赛都是给题直接做,做不出背答案,背多了就懂了

[deleted] · 2022-07-02 16:51:04 UTC · +1 · ielfz5y ·

难道你们说的刷题指的是刷Codeforces?

Hollande_Uranus · 2022-07-02 18:14:18 UTC · +1 · ielrfy5 ·

你是当年靠竞赛考大学的?

Anarco-Statist · 2022-07-02 20:22:21 UTC · +4 · iem89kl ·

傻批高考狗都不考

Hollande_Uranus · 2022-07-02 20:53:13 UTC · +1 · iemc7fo ·

所以你是竞赛保送还是直接出国读本了?

Anarco-Statist · 2022-07-02 20:57:31 UTC · +2 · iemcqvc ·

晶哥别问了

Hollande_Uranus · 2022-07-02 21:25:09 UTC · +0 · iemg9zg ·

我不是晶哥。。

RemoteHoney · 2022-07-02 22:13:47 UTC · +2 · iemmg7k ·

晶姐妳好

Hollande_Uranus · 2022-07-02 22:31:22 UTC · +-8 · iemonym ·

你看我像娘们?

shogunpang · 2022-07-02 17:58:54 UTC · +5 · ielpbzq ·

我自己是学完了coursera algo I&II然后刷leetcode的,但是那个时候你会发现leetcode的easy太easy了..

那门课的作业评分系统做得挺好的,好好做作业的话能学到不少java语法或者style方面的东西。

killzhinakillkill · 2022-07-02 18:05:47 UTC · +3 · ielqa63 ·

数据结构和java手册 java比较通用 还没c++难数据结构是刷题基础

5akura · 2022-07-03 00:05:20 UTC · +1 · ien0g6x · OP ·

好的,这个手册在哪里学比较好,youtube吗

killzhinakillkill · 2022-07-03 04:49:21 UTC · +1 · ienvnaa ·

就找点门槛低的网课 手册网上找

Vast_Spite8928 · 2022-07-02 18:38:06 UTC · +1 · ielunxj ·

直接看算法竞赛入门经典

[deleted] · 2022-07-02 18:41:34 UTC · +1 · ielv46l ·

里面写的代码风格太差了

Weary_Region2683 · 2022-07-02 20:33:02 UTC · +1 · iem9n53 ·

我直接先学c++,途中既有数据结构也有oop。感觉挺好。刷题就用python

5akura · 2022-07-03 00:00:44 UTC · +1 · iemzw21 · OP ·

我怕c++太难自学学不会

[deleted] · 2022-07-03 01:16:27 UTC · +3 · ien8nlr ·

C with Classes可以看看,学习它的对象实现原理,例如非静态成员函数实质是隐式传入了this指针,virtual函数是编译器生成了vtable进行dynamic dispatch

[deleted] · 2022-07-03 01:17:20 UTC · +2 · ien8r35 ·

RAII也是很重要的,然后你就可以去看Rust了

Dont_feed_theUnicorn · 2022-07-02 22:18:12 UTC · +4 · iemn0a8 ·

可以按tag刷,比如你今天学了DP,就去leetcode上疯狂刷DP的题,完全搞懂再换下一个tag

5akura · 2022-07-03 00:01:13 UTC · +1 · iemzy64 · OP ·

这个不错谢谢

[deleted] · 2022-07-03 02:35:34 UTC · +1 · ienhk61 ·

[deleted]

[deleted] · 2022-07-03 02:57:15 UTC · +4 · ienk0gx ·

[deleted]

5akura · 2022-07-03 03:06:11 UTC · +1 · ienl05q · OP ·

不求最优解

听说公司面试会要求用big O给出最优解?

TXKlaaaa · 2022-07-03 07:42:07 UTC · +3 · ieo9ens ·

先学点数据结构和算法设计的基本知识。然后直接开做,不会就抄。抄多了就会了

shinaman_ · 2022-07-03 08:42:09 UTC · +1 · ieodjoi ·

可以去花钱买acwing的算法基础课,如果不想花钱就去看代码随想录 这是我自己学算法的方法

5akura · 2022-07-03 09:10:34 UTC · +1 · ieofh7n · OP ·

代码随想录

谢谢这个网站我先收藏

Zapung · 2022-07-06 21:53:22 UTC · +1 · if4n9mv ·

直接b站搜尚硅谷的Java入门视频看一遍,然后再看多一套数据结构的视频,再刷算法题吧

Realistic_Bell_9256 · 2022-07-08 16:04:56 UTC · +1 · ifcxure ·

就你还尼寇?

fgs78ejlfs · 2022-07-19 15:32:07 UTC · +1 · igsfg2l ·

零基础的话, leetcode从easy开始, 多重复几遍再做medium然后hard。我的经验是不要叫自己太沮丧, 先搞懂简单的题。

语言用哪个都可以, 最好会java或c++。 我就是这么转码的。 完全没上过课。

不需要学discrete math, 但是Object oriented programming 要懂。