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

Comments

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

很详细谢谢🙏

刷题顺序可以去搜labuladong

谢谢先收藏了

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

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

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

傻批高考狗都不考

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

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

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

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

[deleted]

不求最优解

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

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

这个不错谢谢

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

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

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

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

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

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

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

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

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

试试Golang?

Go也没有extension method,Rust有extension trait

比起Go更想用Rust

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

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

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

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

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

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

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

有人用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# 归

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

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

用java就别FP了

你是认为非纯FP非FP?

这个语言没有公司招

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

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

至少学点Java语法?

嗯嗯感觉要先搞清楚这个

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

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

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

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

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

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

代码随想录

谢谢这个网站我先收藏

[deleted]

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

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

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

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

直接看算法竞赛入门经典

里面写的代码风格太差了