JavaRush /Java 博客 /Random-ZH /健脑健脑。当前提升编程技能的任务

健脑健脑。当前提升编程技能的任务

已在 Random-ZH 群组中发布
众所周知,程序员必须定期思考、分析,有时还要找到各种大大小小的问题的非显而易见的解决方案。为此,编码员被迫主动使用大脑,而大脑已经是一个极其“昂贵”的玩具——人脑的质量不超过体重的1.5-2%,却消耗了所有能量的约25%。这对于普通人来说,积极从事复杂项目的程序员的大脑“消耗”了多少百分比的能量是令人恐惧的想象(科学家,很可能是英国人,尚未建立确切的指标)。 健脑健脑。 当前提升编程技能的任务 - 1从这一切可以得出什么结论?要成为一名优秀的程序员,然后保持一名优秀的程序员,你需要让你的大脑充满活力,教它在没有过度压力的情况下定期思考并找到解决方案。就像所有真正有效的方法一样,虽然陈词滥调,但却有效。为了帮助你保持头骨灰质的良好状态,今天我们为程序员准备了一系列带有谜题和谜题的好资源,还翻译了几个有趣的英文问题。

为程序员提供任务的网站

该集合中几乎所有资源都是英文的,因此您不仅有机会练习解决编码问题和谜题,而且还有机会在编程中使用英语进行额外的练习健脑健脑。 当前提升编程技能的任务 - 2
  1. 编码字节

    最受欢迎的英语资源之一,为程序员提供任务。在它上面,您可以找到 200 多个不同复杂程度的任务,可以使用 10 种可用编程语言(包括 Java)之一直接在网站上在线解决这些任务。

  2. 编程实践

    编程实践是一个流行的博客,它定期发布各种有趣的、最重要的是与程序员相关的任务。对于一系列编程语言来说很常见。这些挑战旨在帮助程序员在实践中掌握最新的技术变化和编程方法。

  3. 顶级编码器

    TopCoder 是一个由热爱开发和解决各种问题的程序员组成的活跃社区。定期发布新任务,成功解决任务不仅可以提供练习和提高HR的机会,还可以获得现金奖励。

  4. 代码卡塔

    CodeKata 是一个为程序员提供很多原创且诙谐问题的博客,由 Dave Thomas 发明,他是著名书籍 Pragmatic Programmer(《The Pragmatic Programmer. The Path from Apprentice to Master》)的作者之一。CodeKata网站上的问题多种多样,解决方案与实际编程工作相关。

  5. 北京大学ACIP/ICPC在线法官

    北京大学JudgeOnline for ACIP/ICPC是北京大学的一个页面,包含来自各种竞赛和比赛的程序员的任务。该网站定期更新,问题可以实时解决,解决方案由北京大学专家委员会评估。

  6. 欧拉计划

    另一个古老的知名网站,有着严肃而不平凡的任务。“欧拉计划是复杂数学和编程问题的集合,需要的不仅仅是数学知识来解决。问题的复杂性各不相同,该方法基于归纳链学习。也就是说,解决一个问题后,你会发现一个新概念,它可以让你解决以前无法理解的其他问题,”该资源的创建者说。

  7. 每日 WTF

    Daily WTF 是另一个流行的编程社区,它遵循自带代码 (BYOC) 原则,这意味着开发人员共享自己的源代码来解决各种原始问题。该网站表示:“BYOC 的目的很简单:为软件开发人员提供通过解决比平常无聊的问题更有趣的问题来提高编程技能的机会。”

  8. 特普罗格

    一个优秀的俄语网站,提供算法任务,用于测试谷歌、Facebook 等公司技术面试中专家的技能。提出了许多不同难度级别的问题,包括原始问题。

  9. Al Zimmermann 的编程竞赛

    一个著名作家的网站,“疯狂的程序员在这里争夺名誉和炫酷的奖品”。竞赛每年举行一两次,杰出程序员的名字会发布在资源的主页上,这无疑会吸引有前途的雇主的兴趣。

  10. 蒂姆斯在线法官

    最大的俄语编程问题档案库之一,带有自动检查系统。档案任务的主要来源是乌拉尔联邦大学的比赛、乌拉尔锦标赛和其他地区节目活动。Timus Online Judge 还允许您参加乌拉尔联邦大学定期举办的大多数比赛的在线版本。

5个有趣的任务

对于那些迫不及待想要开始的人来说,这里有一些有趣的谜题。 健脑健脑。 当前提升编程技能的任务 - 3
  1. 史蒂夫·乔布斯的搅拌机之谜

    挑战:你被缩小到五分钱大小并被扔进搅拌机中。您的体重减轻了,因此您的身体密度保持不变。60 秒后刀片将开始旋转。你的行动?

    这是一个通常与苹果公司创始人史蒂夫·乔布斯联系在一起的经典任务。1997 年乔布斯重返苹果时,他亲自采访了公司的每一位员工,并将这项任务作为他的第一个测试。

    解决方案:

    У данной задачи больше одного решения, так How она служит для того, чтобы оценить креативность сотрудника, умение быстро находить выход из стрессовой ситуации и неординарно мыслить. Вот наиболее классический вариант решения: лечь How можно плотнее к днищу блендера, чтобы его лезвия крутorсь над вами.

  2. Сколько людей было на конференции?

    Задача: На конференции каждый гость пожал руку всем остальным. Было 66 рукопожатий. Сколько человек было на научной конференции?

    Другая классическая программистская задача из тех, которые часто дают на первых этапах технических собеседований.

    Классическое решение:

    Допустим, на конференции было n человек. Первый человек пожимает руку всем остальным: n-1 раз (n-1 человек). Второй человек пожимает руку всем остальным (но не первому, так How это уже было сделано): n-2 раза. 3-й человек пожимает руку всем остальным: n-3.

    Таким образом, общее количество рукопожатий будет = (n-1) + (n-2) + (n-3) + …… 0;
    = (n-1) * (n-1 + 1) / 2 = (n-1) * n / 2 = 66
    = n ^ 2 -n = 132
    = (n-12) (n + 11) = 0;
    = n = 12 ИЛИ n = -11

    Вариант -11 исключен, поэтому ответ: 12 человек.

  3. Бар и 25 стульев.

    Еще одна классическая и весьма остроумная задачка, на этот раз посложнее.

    Задача: Есть бар с 25-ю стульями, которые расположены в линию. Посетители этого бара — антисоциальные личности, поэтому, когда они заходят в бар, то всегда стараются найти место How можно дальше от остальных. Если постоянный посетитель заходит в бар и обнаруживает, что свободного места без соседства с кем-либо нет, он разворачивается и уходит. Владелец бара, естественно, хочет видеть можно больше посетителей. Владелец может указать место, на которое нужно сесть, только первому клиенту, тогда How все остальные сами выберут себе самое дальнее место от других. Предположим, что места пронумерованы от 1 до 25. Какое место должно быть занято первым?

    Решение:

    Первый человек должен сесть на стул 9 or 17 (из-за симметрии, не имеет значения, Howое именно из двух мест). Предположим, он выбирает место 9. Следующий человек выберет место 25, так How оно самое дальнее от места 9. Следующие два человека займут места 1 и 17. Следующие три займут 5, 13 и 21. Следующие шесть будут занимать стулья 3, 7, 11, 15, 19 и 23. Таким образом, в баре разместится максимум 13 человек, и никто не будет сидеть рядом с другим человеком. Если место, отличное от 9 or 17, будет выбрано первым, общее количество посетителей бара будет меньше 13.

  4. Деньги в карманах и религия.

    Интересно составленная задача на нахождение алгоритма.

    问题:一个人口袋里有钱,总共有90到95美元。一路上他参观了几座寺庙。他一进寺庙,钱就翻倍,最后他给每座寺庙捐了100美元。结果,参观完最后一座寺庙后,他的口袋就空了。现在的问题是:他最初有多少钱,参观了多少座寺庙?

    解决方案:

    我们从最后一座寺庙开始数:

    参观完最后一个寺庙(1)后,他剩下 0 钱,所以 => ​​(0 + 100)/ 2 = 50。在参观最后一个寺庙之前,他有 50 美元

    在访问前一个寺庙 (2) 之前,他有 (50 + 100) / 2 = 75。
    在访问前一个寺庙 (3) 之前,他有 (75 + 100) / 2 = 87.5。
    在参观之前的寺庙(4)之前,他有(87.5 + 100)/ 2 = 93.75。
    在访问之前的寺庙 (5) 之前,他有 (93.75 + 100) / 2 = 96.875 - 该金额超出了初始条件。
    答案:此人原本有 93.75 美元,参观了 4 座寺庙。

  5. 现场发生的事件。

    最后,另一个古老的经典,人们甚至可以说是类似手风琴的逻辑思维问题。

    问题:在麦田里发现了一具尸体。他手里紧紧地握着火柴。这个人为什么死了?

    解决方案:

    该男子与三名乘客乘坐一架飞机。发动机熄火,飞机开始坠落。这些人发现他们四个人只有三个降落伞,于是开始拉火柴。其中一人拉出了一根短的,被迫在没有降落伞的情况下跳下。

结语

好吧,对于那些觉得这些问题太简单或太笼统的人来说,我们有更复杂的Java 问题,包括Java 程序员面试中经常遇到的棘手问题。如果您知道程序员感兴趣的难题或想分享您最喜欢的任务,请写在评论中。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION