2018 焦糖工作室招新题

考核提交办法:

  • 完成题目后可以提交至 recruit@jotang.party ,截止日期为 10 月 7 日 23:59 ,之后会进行统分。
  • 题目可以多次提交,后续提交的结果会覆盖之前的。
  • 有兴趣的可以完成多道题目,招新对题目数量不做硬性要求。
  • 如果需要与我们交流(比如题目太简单了,题目出现错误等等),请同样发送邮件到招新公共邮箱
  • 不同类型的题目出题进度不同,会陆续发出并更新
  • 由于出题者水平有限,难免有不妥当的地方,敬希赐教

#0 你好!焦糖。

玩,无止境!

你好,很高兴见到你!这是 JoTang Studio 招新的预热题目!焦糖工作室为 2018 级的同学精心准备了一系列的兴趣引导题目。请等一下!不要担心,这些题目难度已经过严谨考虑以及调整,并且不需要全部完成。焦糖希望,通过这些题目,你能够初探信息与软件工程的精妙之处,并且发现自己喜欢的方向进行更深入的探索。

萌新:这引导看不懂啊?这链接为啥打不开?这些名词啥意思啊?这报错了咋整啊?
dalao:Let me Google that for you.
萌新:…卒

不慌,作为萌新友好型工作室,我们会先带你点亮前置技能点。


搜索

对于不同领域的问题,需要灵活运用不同的搜索引擎。
比如我们推荐使用 Google 作为通用搜索引擎,使用必应/百度作为中文搜索引擎。
但除此之外,我们也可以发起针对性的搜索。
例如:对于 Error/Bug,使用 Stackoverflow/Github issue 来搜索。
如果你对于“为什么无法访问 Google”有疑问,欢迎看看我们为你准备的科普文档:深入了解GFW.pdf (1.1 MB)

提问

虽然搜索引擎的效率远逾言辞,但有时,光靠它的能力也有未能解决的问题,我们需要向别人提问。如果是在社区提问,为了更高效地获得可靠的回答,你可以需要一些提问的技巧:

任务

  1. 在十一长假中获得计算机的使用权。
  2. F**k the GFW.(获取外网访问权限)
  3. 闷声发大财,本题无需提交。

划不重点

1.如果同学你没有办法回到家中,你可以考虑去网吧😯。如果你不太想去网吧,那么你可以考虑一下使用 树莓派+外接屏幕和键鼠 的方式练习使用 Linux 系统。如果你想试试用平板/手机代替电脑,也欢迎与我们交流。
2.我们强烈建议你马上拥有一台个人笔记本,赢在起跑线!赢在人生路!(逃

#1 一身才华,一触,即发。

背景

我们深刻了解,你已经对 Windows 系统有足够感性的认知。但此外,与之大相径庭的类 Unix 系统也应成为你的得意助手,它力量强大,能做日常的事,还能轻轻松松应对专业挑战,助你旗开得胜,带给你超乎寻常的奇妙体验。

钟灵毓秀,水土育人,一方才能的施展与环境息息相关。一段代码,一个应用的表达,也与它运行的平台有着密不可分的关联,好的软件,与高效的系统默契协作,才能发挥出令人艳羡的极致性能。JoTang 希望抛砖引玉,望敬请沉醉!

先知

我们推荐你看看鳥哥的 Linux 私房菜这份美味的私房菜烹饪方法。但是作为入门,你可以先看看菜鸟教程上关于 Linux 的介绍

关于虚拟机安装,建议你使用Vmware,Virtualbox,Hyper-V 或 Parellels Desktop(Mac),以下是两篇教程:

https://newsn.net/say/mac-parallels-ubuntu.html

任务

1.力量与你同在:通过云服务器或者虚拟机运行或许是你的人生中第一个搭载 linux 系统的虚拟主机,并为之庆祝!
2.无界面,无繁琐,只有妙不可言:请尝试用 PuTTY 连接到你亲手开启的虚拟主机中(如果你是通过本地虚拟机的方式,请参考如何启动 SSH )。
3. 小身形,大有身手:通过 vim 创建一个文件,并在其中写入 Jotang ,Say hello to the future.(请在邮件里附上你的截图)
4. 威力强劲,玩的更带劲(选做):Docker 是一个开源的应用容器引擎,现在已经广泛运用到商业运营中,化解纷繁,在前面你已经初探虚拟机之美,容器也是一个似但非于虚拟机的沙箱,如果你有兴趣进一步了解,可以看看这两篇关于容器的介绍
http://www.lvzhetx.com/index.php/2018/08/14/容器生态系统简介/
http://www.lvzhetx.com/index.php/2018/08/14/环境的搭建与爱之初体验/
如果你对此还心存疑惑,我们建议你进一步学习虚拟化与容器化的差异

题外话

  • 如果你有希望在云计算以及虚拟化方面大得其乐,可以在网上进一步学习关 Docker 以及云计算的知识。不过,无论如何,请因为兴趣,忠于初心,JoTang 希望你可以将这份热爱带到更深远的学习中去。

#2 Git

背景

第五次收到某同学 QQ 发来的的 debug 请求和压缩包时,我陷入了沉思,于是有了这道题。

在你还在写 C 语言习题的时候可能很难意识到 Git 的作用,因为每一道习题只对应一段代码,并且只有你一个人在编辑(一般也只有你一个人会看),这时使用 Git 很难让你有什么颠覆性的体验。但是对于一个多人参与的项目来说,没有版本控制工具是难以想象的。想象一下下面这些场景:

  • 当你需要编辑一个文件时,如果不想产生冲突,其他人需要避免操作这个文件,那么多人协作事实上被降格为了小范围内的单线程操作。

  • 当对方修改了项目后,你也很难准确地得知修改的位置,和其对你目前任务可能造成的影响。

  • 当你的更改需要进行取舍的时候,可能需要在多个版本的完整代码中比对,这无疑令人绝望。

  • 当你进行的更改导致了严重的bug,或是不得不放弃,你也很难快速地回溯到原先的状态。

显然没有版本控制系统,这些都会在项目开发过程中频繁出现,严重影响我们的开发效率和身心健康。

所以痛心疾首地安利 Git 之后,希望每一位同学都能够掌握 Git,并且习惯使用它来管理自己的代码。

准备

我们推荐看看 Git-Tower 这份精美的教程(反正不要钱)。

(当然你也可以去看官方的 Git-Book

有时你会对许多命令的作用感到困惑,比如 rebase,那么你可以试试这个有趣的沙盒式教程 ——

倒腾一遍会让第一次接触 Git 的你心里踏实许多。

如果你感觉纯命令行让人困惑,想要更直观地操作 Git 分支,可以下载一个 SourceTree 试试,可能会友好一些(它是免费的)。

任务

  1. 掌握 Git 的基本操作。
  2. 如果你还没有 Github 账号,注册一个。可以顺便把 Github Student Developer Pack领了,还不懂是什么的话,可以看看我们以前写的攻略。
    https://d.jotang.party/t/topic/153/3
  3. (选做)如果你还没有使用过 Gituhb,在 Github 或类似平台上创建一个仓库来管理你的日常练习代码。比如C语言习题等。
  4. (选做)在 Github 中创建一个 repo,随意 commit 直到具有 learngitbranching.js 里 level advanced1(多次 Rebase)的起始分支结构,然后完成这个关卡的目标并 push。
  5. 随便写点什么并发送到 recruit@jotang.party(记得附上 Github ID!)。
  6. (选做)有自己的博客是一件多么令人兴奋的事情啊~ 如果你想通过GitHub 免费搭建一个博客,那么你可以试试下面这个教程里面写的博客搭建指南~

https://www.ezlippi.com/blog/2015/03/github-pages-blog.html

如果你想搭建一个包揽前后台以及数据库的动态页面博客,不妨自行进行更多的探索?
可以参考参考这篇 Django博客教程

题外话

  • 不要等到需要参与项目了才开始慢慢 Google 踩坑。
  • 不使用的话,这些命令很快就会忘了。
  • 希望你能继续探索 Github 这个世界上最大的同性交友平台开发者社区,没事多逛逛 Trending ,star 些你感兴趣的项目。

#3 一起来学 Python 吧

背景

从某种意义上讲,编程就是人和计算机沟通的过程,因此选择一门高效的沟通语言是十分有必要的。如果你还没有掌握一门沟通语言,我们推荐你学习 Python 这门简洁优雅,可读性较高的语言作为你的入门语言。

题目内容

我们推荐你以实践的方式学习 Python 语言,并鼓励你记录下学习过程中的感悟(作为加分项)。

如果你对编程还没有什么概念,推荐阅读: 入门指南

任务一

熟悉 Python 的语法,直到能顺利执行任务二。
关于 Python 的包管理,建议查看 Anaconda
IDE方面,可以试试基于网页,能快速展现代码运行结果的 Jupyter Notebook

如果你手头暂时没有合适的资料,那么:

任务二

从下面的三个方向中,任选一个完成

1. ~(・`ェ´・)つ来做有趣的字符画吧!

1. 怎么样分辨两篇文章是否相似呢?

题目背景

鉴于收到了两份一模一样的(前)第一题代码,所以白猫学长决定想出一个好的办法去衡量两份文件的相似度。

题目内容

两篇英文短文:test.rar (2.7 KB)

步骤一

统计两篇文章中的出现次数前10的词。
加分项:用可视化的方式表示出来(参考方向二)。

步骤二(无须代码)

思考如何量化比较两篇文章的相似程度,并建立公式,思考如何确定公式的有效性。
例如:

定义:
same_words 为两篇文章单词出现次数前十中相同的词数
similarity = same_words / 10

显然这是一个非常不精确的定义,但是可以在此基础上进行改良。
提示:哪些因素能说明两篇文章相似性较强呢。

此步骤无须写代码,用任何方式表达清楚你的意思即可,推荐使用数学符号(数学语言)。
但是代码实现作为加分项

你需要提交
  • 源码 + demo (如果你在网上找到这道题的源码,请写尽量多的注释,否则会在面试遇到麻烦)

2. 数据可视化

题目背景

在海量数据时代,把数据绘制成可读性更高的图形可能更有利于我们从数据中得到有用的信息。

Seaborn 是在 Matplotlib 上继续封装的 Python 绘图库,并自带数据回归功能,建议尝试。
效果如图:image

任务内容

学习 Seaborn (或其他任意 Python 绘图库),做出一些你觉得满意的数据视图。Jupyter Notebook 快速迭代的特点可能有利于你完成此任务。

参考资料(可以忽略一些调色的细节):

提交要求

Jupyter Notebook 保存的 .ipynb 文件。

3. 机器学习入门:

题目背景

机器学习的火爆似乎无需多言

题目内容

FBI WARNING: 这远远不是机器学习的全部,但是可以让你尽快的对机器学习有所了解。

  1. 观看 机器学习理论教程
  2. 配置 Keras 运行环境
  3. 观看 代码教学
  4. 用任何模型实现对MNIST数据集的分类

注意理解机器学习中的各种术语。

提交内容

代码

#4 人在吉林,嫖到失联

题目背景

本题前方高能劝退预警!!!
Jotang工作室不仅仅有各类工程巨佬和深度学习(炼丹)大仙,还有一个沉迷ACM竞赛的菜鸡学长。
这位学长在前不久参加的中国大学生程序设计竞赛(吉林赛区)上因为卡死一道DP(dynamic programming)与银牌擦肩而过。
赛后被队友喷出*来QAQ,于是打算苦心钻研DP问题~于是在本次招新给大家出一道入门DP!

题目内容

Time limit:1000ms Memory limit:32768kb
v_HJF在比赛失意之后,决定来北京散散心。不知不觉走到了前女神的大学—中国人民大学…(痴汉脸)
女神是金融专业,她老师给她布置了一个任务:每次给出一笔初始资金金额$x(0=<x<=1000000)和这笔资金要投资的年份时间y(0<=y<=40)。
同时给出有d(1<=d<=10)个可用债卷,每个债卷类型给出信息包括:债卷价值和年利息。
问你用最佳策略快速给出在y年后你能获得多少钱?
女神问:“v_HJF你能帮我做完这个作业,我就和你嘿嘿嘿!”你能写个程序帮帮这个少年吗?
Input
第一行包含一个正整数N,它是测试用例的数量。
接下来是测试用例。测试用例的第一行包含两个正整数:初始资金金额x和这笔资金要投资的年份时间y
下面一行包含一个数字:可用债券的数量d。
下一行每一行都包含一个债卷类型的描述。债券的描述包括两个正整数:债券的价值和债券的年利息。债券的价值总是1000美元的倍数。债券的利息永远不会超过其价值的10%。
Output
对于每个测试用例,单独一行输出,你用最佳策略进行债卷投资之后的资金金额。

Sample Input
1
10000 4
2
4000 400
3000 250
Sample Output
14050

参考资料

google,度娘,和自己的脑子
《背包九讲》

提示

  1. 债卷一年结算一次,一种可用债卷可以购买多个。
  2. 提交说明,请同学用C++/Java写,以及写完把源代码和题解发到招新邮箱。本题有10个测试点,按照过的测试点数量给分,同时题解word&pdf作为加分项。
  3. 请同学们不要尝试抄他人题解,独立完成,若发现抄袭情况,直接取消招新资格。
  4. 本题只有提交一次的机会。(慎重OI赛制)

其他说明

1、想到在说(逃

#5 奶茶店老板,店要倒闭啦

题目背景

有一天,焦糖的搬砖美工走进了一家饮品店,看着一张白底黑字的 A4 纸菜单陷入了沉思……这样的菜单,买家分分钟一个差评甩来。~~菜单这么丑!还敢卖奶茶?~~我们要做精致的 Jotanger !

题目内容(二选一)

  1. 重新设计一张精美的饮品菜单(文字内容可参照 coco、一点点、舞茗等)

  2. 用原型工具设计一个店铺网页

    • 要求:可交互,尽量精美,并且加入自己的想法与创意

    • 涵盖菜单、账户信息、店铺信息(地址:二教 507 ,电话:66694666)

    • 结构层次可参考星巴克

萌新们都可以试试哇!说不定以后就成为了社团或者工作室的设计扛把子!

参考资料

搬砖美工倾尽为数不多的库存……这应该是参考资料写的最多的题了……

菜单篇(平面设计)------------------------------------------------------

  1. Photoshop 基本操作
    • 视频篇
      • 比较系统的敬伟教程,经搬砖美工自己试用,感觉良好(请不要吐槽俺在 b 站学习)
      • PS实例,doyoudo PS系列,小姐姐温柔教学!
      • PS实例,一行影视动画,简短快速,适合暂停观看
      • (以上都是因为俺喜欢制作精良的教程视频……)
    • 搜索篇
      • 想要某个效果怎么办?网上的 PS 教程一搜一大把,把“如何 xxxxx ”输入你的搜索框,即刻便知
    • 书籍个人不是特别推荐,因为看起来慢,而且不如视频生动直观
  2. Sketch 基本操作(如果你是一个拥有金钱的 MAC 用户)
  3. 收集素材,动手操作

网页篇( UI 设计)------------------------------------------------------

  1. 了解 UI 设计

  2. 了解原型图

  3. 原型工具选择

  4. 学习设计的网站

基础素质培养篇------------------------------------------------------

  1. 视频篇
  2. 网站篇
  3. 书籍篇

其他说明

  • 提交时请提交 .PSD / .sketch / .XD 文件
  • 如果你已有一些设计作品,也欢迎与我们交流