谈谈做oj

   前同事离职了,向他请教了一下应该怎么工作,然后跳槽。他说每天抽出一小时做一下oj,然后多看看资深员工写的代码。这两点都很重要吧。在办公室听领导谈话,招聘时做oj也是常规手段,因为简单有效,没有谁有那么多时间。做oj就是解决一个小问题,这虽然对业务理解没有什么益处,但你当你处理业务时,就会发现熟练的编程技巧能够快速完成任务。同时,我也在尝试看spring源码,但是源码真的太难看了,就是学习书上的一个小章节,感觉都很难理解,因为它不仅仅是增删改查,设计到复杂文件的解析等,所以做oj也有利于增加对源码的理解能力,而不仅仅是crud,也算是提高自己的算法能力。

  就拿今天的奥运会奖牌排名问题,虽然是一个不难的问题,有思路,但是要写地快,性能好,资源占用低,容易理解,还是会学到很多东西的。这就是我初中历史老师教的以点带面复习方法。比如涉及到基本的Scanner的方法,Comparator使用,List排序的原理,看它的源码就是调用了Arrays和Collections的排序方法。这其中,我又参考了<effective java>,发现这个Josh Boch就是这个Comparator的作者,看看国外写书的人就是不一样。在测试时还发现Comparator中的reversed方法和预期的效果有差异,虽然没有看懂源码,但是经过测试,发现了别人写的博客中有错误。虽然一天一题都没有完整解决,但是真的遇到了很多问题,然后自己也解决了,学到了很多,所以应该多做一些算法题。

  比如做oj时有排序的需要,就需要考虑到java中List和Collection中的排序算法,这就要考虑到其排序的稳定性。查看源代码的解释,这些都是稳定的,也可以看到,其大概是用的是归并排序算法,而不是快速排序算法,因为快速排序算法是不稳定的。

 

posted @   懂得了才能做一些改变  阅读(394)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示