Kotlin编程挑战
这个仓库包含一系列编程挑战,旨在使用Kotlin语言来解决(这里也有提示、解决方案、测试和有用的链接)。
本仓库的目的是帮助你练习编码并培养强大的问题解决能力。这将帮助你成为更好的程序员,并通过通过白板编码面试来提高获得新工作的机会。
挑战结构
每个挑战都位于单独的包中,包含3个主要文件(截图):
README.md
- 任务描述。Challenge.kt
- 包含应该解决挑战的空方法/类的文件。该文件还包含一组测试,有时还包含辅助方法。你可以直接从这个文件运行所有测试(点击Test
类旁边的绿色箭头)。 JUnit测试用于验证任务是否正确解决。Solution.kt
- 包含一个或多个解决方案的文件。
请记住,每个挑战通常会有不止一种解决方案。即使是像字符串反转这样简单的挑战也可以用10种不同的方式来解决。通常,我们使用(大O表示法)来比较各种解决方案的空间/时间复杂度,并关注代码的可读性。
如何开始?
- 安装IntelliJ IDEA
- 使用IntelliJ IDEA菜单导入项目:
File | New | Project From Version Control | Git
- 选择一个挑战(src\test\kotlin\com\igorwojda包)并在
Challenge.kt
文件中编写解决方案 - 运行测试以验证提供的解决方案
让我们来解决一些挑战
以下挑战按不同难度分类。该仓库还包含按问题类型分组的挑战。
一些挑战可能会引用其他应该先解决的挑战,以便更好地理解问题。查看问题解决策略。
在查看给出的解决方案之前,请花些时间思考。要成功,你需要经常练习,多次重复相同的挑战,并长期保持坚持。
祝你好运!🤞
初级
[列出初级挑战]
中级
[列出中级挑战]
高级
[列出高级挑战]
专家
故障排除
如果你看不到用于运行测试的绿色播放图标,请尝试打开"设置" > "构建、执行、部署" > "构建工具" > "Gradle",并将"Gradle JVM"设置为不同的版本。
有用的链接
更多编码挑战
挑战
- GeeksForGeeks - 大型且分类良好的问题集。
- HackerRank - 大型问题集和额外的商业面试问题。
- LeetCode - 按难度分类的数据结构/算法/公司面试问题。
- Exercism - 提供跨越60多种编程语言的大量挑战的编码挑战网站。
- Project Euler - 更复杂的挑战,通常与数学相关。该网站已包含600多个问题,每周或每两周都会有一个新的代码挑战。你可能需要与社区讨论问题,因为网站上没有解决方案。
- Advent of code - 每年年底每天发布的一个月各种编程问题。幸运的是,过去活动的存档仍然存在。
- CoderByte - 200多个挑战,按难度分类的数据结构/算法/公司面试问题。不幸的是,大多数只对高级用户开放。高级版可以访问高级分步解决方案和用户解决方案。
- CodeChef - 包含一组按难度分类的编程问题。
- Code Forces - 编程挑战列表比其他网站小,但你仍然有很多问题要解决。
- Spoj - 编程挑战列表比其他网站小,但你仍然有很多问题要解决。
游戏挑战
视频课程
书籍
网站
- 不使用白板的招聘 - 不进行"白板"面试的公司(或团队)列表。
- VisuAlgo - 通过动画算法可视化数据结构和算法。
- 数据结构解释 - 各种数据结构的描述。
- 排序算法动画 - 使用动画直观比较最流行的排序算法。
- 大O海报 - 可打印并挂在墙上的时间/空间复杂度海报。
- 大O速查表 - 涵盖常见算法的空间和时间大O复杂度。
编码面试仓库
贡献
欢迎通过错误报告或新的PR提供反馈和新的贡献。要添加新的编码挑战,只需遵循此指南并开启PR。
作者
许可证
MIT许可证
版权所有 (c) 2023 Igor Wojda
特此免费授予任何获得本软件副本和相关文档文件("软件")的人不受限制地处理本软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售本软件副本的权利,以及允许向其提供本软件的人这样做,但须符合以下条件:
上述版权声明和本许可声明应包含在本软件的所有副本或大部分内容中。
本软件按"原样"提供,不提供任何明示或暗示的保证,包括但不限于对适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权行为还是其他方面,由软件或软件的使用或其他交易引起或与之相关。