2020 焦糖工作室招新

焦糖工作室是干什么的

是一个西点屋

焦糖工作室(Jotang Studio)是电子科技大学信软学院创新工坊的一个学生技术团体,主要活动地点在电子科技大学沙河校区三教507

焦糖工作室全部由本科生组成,在这里可以拓宽技术的视野,和小伙伴们一起开展课程安排中没有的技术实践,焦糖的目标是让每一位成员都能得到成长

2020招新活动安排

工作室永远欢迎对技术和团队热爱的新人!无论你是大一还是大二,都可以加入这次技术马拉松赛,并在这个过程中掌握技能和探索自己的方向,相信你自己,很多事情没有那么难。

  1. 为期一个月的技术马拉松赛 从2020.9.21日开始,到2020.10.21日截止
  2. 工作室招新面试阶段:在技术马拉松中达到通过标准的同学可进入工作室面试阶段

如果你不是萌新,可以将简历发送到邮箱admin@jotang.club,我们将组建专业团队(误)对简历进行评析并在3个工作日内给与答复。

规则

  • 完成任意题目后可以提交至 admin@jotang.club ,邮件主题格式: 题目序号-姓名 。 例如: #2-段衍凯。截止日期为 2020.10.21 PM 23:59。,建议不同题目发送不同邮件

  • 邮件中请使用Markdown文档并附上该题的Github项目链接,如果你还不知道什么是Markdown和Github,请先做科普福利题#1 啥是Git#2 Markdown

  • 题目提交次数不限,以最后提交版本为准。

  • 招新对题目数量不做硬性要求,你可以深入一题,体现你的技术深度,也可以“我全都要”,探索自己的兴趣方向。

  • 如果需要与我们交流(比如题目太简单了,题目出现错误等等),请同样写下你的具体想法发送邮件到上述邮箱。

  • 截止日期后约半个月的时间里,我们会根据题目的完成度和在Markdown文档记录与细节给出评分表,并将其汇总为一个总评分表,达到通过标准的同学可以进入面试阶段

  • 当你发现有些帖子打不开或者下载不了,建议更改域名中的“d.jotang.party”为“d.jotang.club”,这是我们论坛迁移的bug,正在修复,请您谅解

  • PS:诚信是Jotanger的底线,一旦我们发现解答中存在严重的copy现象,无论技术力如何,我们都将拒绝您的加入

题目类型

4 Likes

#0 Let’s Warm Up!

你好,欢迎来到这里!这个部分是 JoTang Studio 招新的一系列预热题目!焦糖工作室为 2020 级的同学精心准备了兴趣引导和前置技能题目。但是不要担心,我们的题目难度已经过严谨考虑和调整,并且我们并不要求全部完成。焦糖工作室希望,你可以通过这些题目,初探开发和软件的世界,并能够发现自己感兴趣的方向。

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

不要慌嘛,焦糖是一个萌新友好型工作室,我们会先带你点亮前置技能点。

搜索

对于不同领域的问题,需要灵活运用不同的搜索引擎。

比如我们推荐使用 Google 作为通用搜索引擎,使用必应/百度作为中文搜索引擎。

这里推荐一个聚合的搜索引擎网站:虫部落快搜

如果你想掌握更高级的搜索技巧,这篇文章也很简单易懂:搜索引擎的一些高级搜索指令

但除此之外,我们也可以发起针对性的搜索。

比如如果你在编程过程中遇到了奇奇怪怪的难以修复的BUG,你可以考虑使用国内的CSDN论坛搜索,也可以使用StackOverflow它们都是优秀的开发者社区

如果你对于“为什么无法访问 Google”有疑问,欢迎看看我们为你准备的科普文档:深入理解GFW

提问

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

你的任务

  • 迅速获得获得一台计算机的使用权。

  • F**k the GFW.(获取Google等网站的访问权限)

  • 闷声发大财,本题无需提交。

划重点

  1. 如果同学你没有办法回到家中,你可以考虑去网吧(一起来网吧编程!)。如果你不太想去网吧,那么你可以考虑一下购买一块树莓派+外接屏幕和键鼠的方式练习使用Linux系统。如果你想尝试用平板/手机代替电脑。你的下一台电脑,何必是电脑,也欢迎与我们交流。

  2. 我们强烈建议你马上拥有一台个人笔记本,赢在起跑线!赢在人生路!(逃

#1 啥是Git

背景

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

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

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

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

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

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

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

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

准备

1. 初识 Github

如果你还没有 Github 账号,注册一个。可以顺便把 Github Student Developer Pack 领了,领取流程可以参考我们以前写的攻略。

如果你没有使用过 Github,可以在 lab.github.com 上完成一些入门课程,很快就能明白啦。

2. 掌握 Git 的基本操作

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

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

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

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

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

任务

  1. 有自己的博客是一件多么令人兴奋的事情啊~,通过 GitHub pages 免费搭建一个博客吧!
  2. 玩一下 https://learngitbranching.js.org/高级话题1-多次 Rebase 这一关。然后在 Github 中创建一个存储库,自己构造 commit 模拟出这个关卡的初始状态,并在真实的 Github 存储库中像游戏里一样操作,完成这个关卡的内容并 push,具体 commit 内容和 commit message 不作要求。

如果你更喜欢搭建包揽前后台以及数据库的动态页面博客,比如这样的(强行给学姐博客打广告🤣),可以自行探索~

题外话

  • Github 的 private repo(私有存储库)已经对个人用户免费了,所以不用害羞哦!
  • 本题旨在带你了解 Git 和 Github,发现更大的世界。哪怕对 Git 和博客不感兴趣,也希望你能注册并探索一下 Github 这个世界上最大的开发者社区,没事多逛逛 Trending ,star 些你感兴趣的项目。
  • 提交的时候记得附上你的 Github 主页和博客链接哦!

#2 Markdown

背景

多年以后,小原寒再一次打开邮箱,还会想到那个与工作室小伙伴们兴高采烈地打开招新题收件箱的那个遥远的下午,在看到满屏幕的.doc格式的word文档陷入了沉思,欲哭无泪的表情在他脸上久久不能散去(误

不是吧阿sir,你还在用Word?

Markdown是一种轻量版文本标记语言(萌新:什么是文本标记语言?)

Markdown可以让你用写txt记事本的写法写文章,但却可以生成不亚于word文档的好看的排版,在计算机世界中,遍地是markdown格式的文档,无论是Github里各个项目的README,还是优秀的工程师的博客,都是由Markdown书写,除此之外,markdown在简书、知乎以及很多论坛中得到应用。

Markdown并不是一个软件,你可以使用任何编辑器书写markdown文档

注意:本次技术马拉松中你提交的所有文档都应该是markdown格式哦

一起来学习Markdown吧!

#3 开源正在改变世界,Pull Request 吧!

背景

当你享受着开源软件带来的便利,是否有想过给开源社区作出贡献呢?

每年的 Hacktoberfest 是一个很好的机会,帮助你跨出走进开源社区的第一步。

Hacktoberfest 是一个由 DigitalOcean主办的,为期一个月的开源软件庆典。

按照官网的指引注册后,在1个月内向任意的 Github 公共存储库提交4个PR,即可获得一件跨洋而来的酷炫 T恤。

除此之外,如果你参与贡献的项目来自某些同样参与了 Hacktoberfest 活动的公司,那么你还将同时获得他们的其他奖品!可以查看下面这个奖品清单来确认有没有你喜欢的奖品,方便你“一箭双雕”(毕竟 :tshirt::gift: 谁会嫌多呢)

想想看你可以为 Github 上你感兴趣的项目做什么?提交一个 feature? 修复一个 bug?
不不,远远不止,只要以 PR 的形式参与开源项目的完善都是被认可的,哪怕你只是做一些和项目代码关系不大的工作,例如翻译订正文档。甚至如果只是为了白嫖,还可以去某些 repo 刷 PR :shushing_face:

任务:

参加 Hacktoberfest 2020 并拿到T恤。

特别提醒

注意确认好T恤尺码

#4 焦糖西点屋,为啥每次都要排队???(UI设计/产品(/前端))

你走进了焦糖西点屋,面对着望眼欲穿的老婆饼、蛋挞、泡芙等甜品,一抬头,竟然是长长的排队队伍!你一气之下,大吼一声:"诺大一个西点屋,怎么没有手机端自助点餐呢!"不巧,这话竟被焦糖西点屋老板小晟宇听到了。小晟宇怒气冲冲:“有本事你来做啊!”

题目内容

任务一(必做)

很幸运,你恰好是一位UI设计师,并兼职产品经理,你决定为西点屋设计一个APP自助点餐,优化客户体验。

任务1:为焦糖西点屋设计一个自主点餐APP。

要求:

  1. 设计APP的功能模块,实现APP的UI界面。
  2. 至少需要设计最基础的功能:即自助点餐。
  3. 可以增加一些功能模块,涵盖自己独特的想法和创意。
  4. 机型不限。

交付方式:

  1. 源文件(.sketch/.xd/.psd…)
  2. PNG@1x

任务二(必做)

作品是设计师的语言,可惜小晟宇不懂。你需要做一个PPT或视频为外行人讲解你设计的APP逻辑。

任务2:讲解你的产品功能,展示UI设计页面

要求:

  1. 阐述产品概述、产品架构、功能模块。
  2. 进行基本页面展示。
  3. 选做:阐述APP的设计规范。

交付形式:
PPT/视频/等方式呈现。(选取一种即可)

任务三(选做)

精良的设计只是吸引眼球的第一步,产品的完成还需要开发。你恰好也是一位前端编程人员,不巧被小晟宇得知,他威胁你写出前端界面,否则不给结工资!

任务三:为你的产品实现一个前端界面

要求:

  1. 不需要和设计稿完全一致,能够实现基本的功能即可。
  2. 只需要基本的跳转逻辑,实现静态界面即可。
  3. 使用的语言和框架不限。

交付方式:

  1. 源代码打包文件。
  2. 页面运行的截图/视频。(选取一种即可)

提示

任务一可以参考星巴克、一点点等App,任务二可以参考全国大学生互联网+路演视频(例如wowgo3‘46’‘后的展示环节),任务三可以参考前端题。

参考资料

UI 设计篇

  1. 了解 UI 设计

  2. 了解原型图

  3. 原型工具选择

  4. 优秀作品展示网站

  5. 收集素材,动手操作

#5 Linux / WSL

题目背景

学期开始,想要加入 Jotang 工作室的小马面对各种招新题,早已跃跃欲试。为了完成招新题,小马先是安装配置了 Python 开发环境;转头捣鼓 Java 时,又配置好了 JDK;配置好了 Go 的开发环境后又去安装了 Node 包管理器。

问题来了:

不同的框架兼容不同版本的开发环境出现兼容问题时,这时小马看着已经变成各种语言各种版本号形状的环境变量参数,早已欲哭无泪。而 Windows 又是平时的生产环境,不方便全盘清空重装,这时要怎么办呢?

这时 WSL2 闪亮登场,他能够在 Windows 环境下虚拟出一个带有完整 Linux 内核的开发环境

问题又来了:

WSL2GUI 配置困难,而且有的同学就是喜欢用带有 GUI 的发行版。命令行虽好,但是同时拥有 GUI 不香吗?

显然此时只有完整的虚拟机能满足小马的需求了,在虚拟机下,小马得到了:

  1. 便于配置各种语言的开发环境

  2. Linux下更方便地处理不同开发环境的版本兼容

  3. 便于试错,配置炸了的话随时可以清空整个环境不用担心生产环境数据丢失

  4. 满足小马的洁癖与强迫症

至此,小马可以开开心心地做各种招新题目,再也不用担心他心爱的 Windows 环境变成各种形状了!

题目内容

任务(二选一)

  1. 安装配置 WSL2 的 Ubuntu 发行版

  2. 在虚拟机软件中安装配置 Ubuntu 发行版

选择哪条分支根据个人兴趣以及需求来即可。

加分项

  1. 通过 VScodeRemote 插件连接至你的虚拟机 / WSL2

  2. 配置好基于 SSH 密钥的免密的远程服务器登陆

  3. 开发出简易的 Shell 小程序

提交内容

  • 每一步的截图

  • 文字说明

  • 个人感想

以上内容通过 Markdown 格式的文档提交

#6 MY DREAM SCHOOL,你 本 来 就 很 美

题目背景

小晟宇今年考上了电子科技大学,于是在暑期提前到学校进行参观,从 美 丽 的电子科技大学 括号
沙河校区 括号,回去之后,小晟宇开始欣喜的对自己拍的美景进行PS,滤镜、风格这么多,小晟宇该选什么呢?

题目内容

所以「滤镜」是怎么实现的呢…?

任务一

了解什么是「滤波器」,图像在计算机中是怎样存储的,滤波器对图像进行了什么操作可以达到滤镜的效果。自己实现or调库完成滤波器的功能,最好能自己魔改一下滤波器看看处理完图像是什么效果。

任务二

小晟宇对照片处理很是不满意,想对图片进行更高级的改变,于是小晟宇打开了轻颜相机(打钱),把主楼转化成了梵高的星空风格。请了解什么是「风格迁移」,实现输入图片->输出风格迁移后的图片的系统,有能力的同学可以自己训练模型。

9024C408CAD13867EE0AAB5C69B50443

Tips

生而为人,我用python

最好将你的过程与结果记录在markdown,不然我是不会看的 :face_with_raised_eyebrow:

任务一最好自己了解原理实验。

任务二可以好好的利用搜索引擎

参考资料

[1] [1508.06576] A Neural Algorithm of Artistic Style
[2] 如何利用conda进行python环境管理
[3] 如何选择深度学习框架

#7 懒人必备-------Python

题目背景

小海涛一直过着充实而快乐的coding life,然而有一天小海涛终于忍不了某些又 臭 又 长(但很快)的语言了,于是它喝了一杯焦糖玛奇朵熟 练 掌 握了Python,从此开始了一行顶十行的coding life

(早上起不来的同学们一起来学习懒人必备的Python吧!

题目内容

任务 们

初级任务

  1. 数据可视化(基于Matplotlib或其它数据可视化包(如plotly等,其实更美观),关键字给了,搜索引擎请)

    • 通过plot方法画出球场背景(好看)
    • 用任意方法画出所有传球事件并生成视频(数据在passingevents.csv中)
    • 以统计图的方式统计各个球员的所有信息(数据在fullevents.csv和matches.csv中)
      (球场坐标系统和数据范围都可以从数据中分析得到,认真对待这个过程噢)

    数据链接(优先阅读README.md):

    ​ 链接:https://pan.baidu.com/s/16C_RgjGM6OQnedY9iDT8xQ
    ​ 提取码:9ju1

后期任务(2选1,想都做也可以)

  1. 实现一个简单简单简单简单简单的webservice(基于Flask / Django框架都可以,这是什么?搜索引擎请)

    什么是 Web API?
    在我们了解什么是Web API之前,让我们看看什么是API(应用程序编程接口)。
    根据维基百科的API定义:在计算机编程中,应用程序编程接口(API)是一组用于构建软件和应用程序的子例程定义,协议和工具。
    简单来说,API 是某种接口,它具有一组允许程序员访问应用程序,操作系统或其他服务的特定功能或数据的功能。
    Web API 顾名思义,是一个可以使用 HTTP 协议访问的 Web 上的API。这是一个概念,而不是一种技术。我们可以使用不同的技术(如 Java,.NET 等)构建 Web API。例如,Twitter 的 REST API提供对读写数据的编程访问,使用它可以将 twitter 的功能集成到我们自己的应用程序中。

    • 符合Restful风格(restful关键字,搜索引擎请)
    • 有基本的GET/POST请求交互(功能不限,具有一定意义即可)
    • 搭建完成后能够通过浏览器 / Postman访问(部署在本地即可,如果能部署在服务器上就更好了,加分项)
  2. 贵院信息门户自动登录(破解滑动验证码,关键字给了,搜索引擎请)

    • 通过python的抓包工具获取到验证码图片(或直接通过Selenium截图)
    • 分析图片得到滑动路径
    • 使用Selenium自动化进行输入、滑动滑块等操作

Tips

  • 活用搜索引擎
  • 既然用了python,代码可以写得更简洁噢

本人邮箱:1051360477@qq.com

#8 提前(了解)996社畜(相关信息)

背景

鲨鲨作为刚入这行的萌新,很想知道之后实习的岗位信息和相关工资。但这时候如果自己一个个去看去查,感觉不够Hacker,么得逼格,于是鲨鲨快乐地去点亮我们可爱的爬虫技能点了(ding~)

网络爬虫 (web crawler),也叫网络蜘蛛(spider),是一种用来自动浏览万维网网络机器人。其目的一般为编纂网络索引 这听起来并不像人话 让我们通俗点解释一下,如果将因特网比作一张错综复杂的交错巨网,那么爬虫就是这张网上的一只只小蜘蛛,这些蜘蛛会将他们探下的路的踪迹和在路上抓到的资源反馈给我们。

总而言之,爬虫就是一段可以自动抓取互联网上对于我们有价值的信息的程序。
既然说到了程序和编程,接下来就开启冒险,让我们来谈谈这次的通关任务吧。

任务

主线任务

  1. 爬取数据 :经典找实习网站 牛客网,爬取相关信息并存到 数据库 (可以先从存在本地开始);
  2. 请将尝试爬取的过程整理到markdown中,连同代码github链接和爬到的数据,打包发给我们;

支线任务

  1. 数据查询 :学习简单&基本的 sql语句 ,能够进行数据的 增删改查 (数据库请自行选择);
  2. 数据可视化 :学习运用数据可视化基本操作,可以按城市,企业,薪资各方面进行交叉分析;

隐藏任务

  1. 数据展示 :提供一个可以 数据查询 展示窗口(这步运行在本地即可 且 不作GUI方面要求);
  2. 服务部署 :需要一个服务器(阿里云学生免费试用30天)然后建议使用docker快乐部署。

Tips

  1. 爬虫,Python requests re bs4 库 作基本学习, Scrapy 框架较适合本题;
  2. 爬虫,如果熟悉web或者想少写点代码或者想看可视化界面可以尝试node-red;
  3. 数据库,常用的MySQLMongoDB较为推荐,当然其他数据库肯定也都可;
  4. 可视化,python的matplotlib那是真的好用啊,当然MATLAB什么的也成;
  5. 可视化,如果觉得matplotlib地图可视化不好用,那安利下folium库;
  6. 数据展示,建议前后端分离,当然不分离也行,能整出来就ok了;
  7. 部署,docker真香,docker可视化工具portainer也相当推荐;
  8. 不要求全部做出来,主线任务必须完成,支线任务多多益善,隐藏任务供您消遣。

#9 一起来人工智能吧!(统计机器学习)

题目背景

大数据,深度学习,需要巨量计算的AI算法在这些年造势不小,但受制于模型的可解释性以及效率问题,传统的机器学习算法仍然被广泛的使用,回到最简单的时序预测问题,从高中就开始的线性回归到深度模型的LSTM,多种多样层出不穷,哪种才是最好的呢?

题目内容

焦糖工作室在小晟宇的努力下陆续推出了四款糕点,老婆饼,蛋挞,泡芙,以及最新的焦糖,我们想知道今年刚推出的焦糖明年在我们连锁的4家糕点店的生意好不好,明年的总体盈利情况如何

数据描述

数据链接
链接:https://pan.baidu.com/s/1q2fTT5-L6Ea19DZUIs1dVQ
提取码:imba

每一行的数据表示一个季度的营业额

由于几款糕点都是陆续推出的,所以前面出现一些商品的营业额缺失是正常的

数据当中没有给出去年焦糖的销量,自己拿总销量减去其他糕点的销量就好了(有的连锁店进焦糖可能稍微会早一点)

任务1:

数据可能出现少量错误以及少量缺失,找到并且修正

(notice: 虽然我们的数据规模比较小,我们希望能有一种的自动纠正错误的方法,当然嗯找也是可以的,本任务为加分项)

任务2:

对数据进行合理的可视化,尝试去寻找规律

(notice:算是数据分析的必要阶段,抽象数学思维好的朋友也可以选择不做,我tm直呼牛逼)

任务3(必做):

根据当前数据预测明年一年四个季度焦糖的营业额和总营业额

(notice:这是最核心的任务,大一的小朋友不要忘计高中学习的知识,比如线性回归(高考基本必考),还有r指标等等,高中统计学学过那点知识理解一下背后的含义并加以运用是一个不错的选择,不一定要写代码,excel,spss等简单的数据分析软件都是可以使用的)

需要提交:

  • 数据可视化的结果(可选)
  • 展示你的纠错方法 数据分析方法和结果
    按照赵大哥的说法,要用markdown来写哦,如果图片显示不出来,可以转成pdf提交
    逻辑条理一定要清晰,数据分析很少有一个最优的模型,言之有理即可

参考资料:

备注

所有的机器学习方法都是双刃剑,都需要我们去寻找数据特点,找不到数据特点也可以从方差 平均数入手啊,不算白不算。大一的小朋友可以好好回顾一下高中学的统计知识哦。生活缺少的不是抽水马桶,而是***的勇气。
如果大一的同学感觉有点难,可以私信我要一些提示,题目有任何问题建议邮箱联系:2018091609027@std.uestc.edu.cn

#10 做甜点的怎么能不懂顾客的想法呢!!!

背景

一天小莎莎四处溜达发现了焦糖糕饼屋,一进门就听见店长小旭杰热情地招呼道:“可以用手机点餐哦!“

小莎莎拿出手机,写好了所有的信息,点击提交后就在座位上兴奋地等待,但是等了很久都不见糕饼的踪影,小旭杰像想起了什么似地一拍脑门说:“哎呀,好像只做了漂亮的页面是不知道顾客的想法呀~”

如果要知道顾客在页面上告诉了我们哪些信息,Web服务必不可少呀。Golang在Web应用上称得上得心应手,它拥有成熟的Http处理包net/http,可以很方便地搭建一个可以运行的Web服务,使用Golang来搭建一个简单的Web服务吧!

http是什么?搜索引擎会告诉你的

题目

一起帮小旭杰得到顾客的心吧~

任务

  1. 处理提交到后台的form/json/url参数等数据,并按照某种格式告诉自己成功收到了数据吧!

    • 你不需要实现前端页面,只用提供一个handler(处理器)

    • net/http标准库中有很多可以满足你需要的函数

    • 返回的数据可以是json/string/html等等

    • 使用Postman一类的工具测试

      举例:

      传递数据:

      {

      ​ “username”: “skuair”,

      ​ “password”: “cuteshark”

      }

      接收后返回:

      hello, skuair, your password is cuteshark!

    将你实现的过程以markdown的形式记录下来吧

  2. (选做)参考某一种框架(Beego/Gin/Iris等等)的接口设计模式,实现基本Web服务吧!

    请完成一个路由映射表,至少能够实现对"/","/helloJoTang"两个路径的Get和Post方法的响应处理

    举例,使用Postman等接口测试工具测试时,希望能达到的效果:

    测试 “http:127.0.0.1:80/” GET

    响应:Hello Jotang!

    如果你觉得这还不够,还可以继续完善你的框架,包括:

    • Context实现:包含一个请求和响应可能包含的信息吧,并需要设计对其中信息提取的函数和返回信息的函数(返回类型固定String)
    • 使用树结构实现路由表,包括添加路由、查找路由等基本功能,思考怎么根据路径结构存储路由吧
    • 实现一个简单的中间件,并处理一个数组越界/空指针/…等错误

资料

The Go Programming Language

A Tour To Go

菜鸟教程-Go语言基础

计算机网络基础知识

net/http标准库基础

go web http编程

#11 又 臭 又 长 的 Java

背景

Java最出名的就是它赖以生存的JVM虚拟机,完善的GC使其相对于C/C++不用进行繁琐的内存回收,强大的JIT也使其性能不逊于C/C++太多,丰富的生态让Java开发者编写代码时更加得心应手。静态语言的特性也让Java的错误不必在运行时才出现,编译期间就可以防范于未然——但是与此同时,也让Java变得又 臭 又 长

学习资料

廖雪峰的Java教程网址:https://www.liaoxuefeng.com/wiki/1252599548343744

菜鸟教程:https://www.runoob.com/java/java-tutorial.html

推荐书籍:

Head First Java:入门级Java书籍,简单易懂,但是深度可能欠缺一点。

Think in Java:好书,建议看完上一本书再看。

Java核心技术:可以当作字典来用,哪儿不会的看一看,相对来说还是浅了一点。

深入了解JVM虚拟机:如果自认为对Java有了一定了解,可以尝试这本书,讲得是真的好。

Java并发编程基础:对并发编程有兴趣的可以看看。

Spring源码解析:如果想要上手Spring框架的同学,又不甘于当一个普通的API调用师,可以试试这本书,不过平心而论讲得一般般。但我只看过这本Spring源码的书,就暂且推荐这本吧。

题 目 们

题目一(大一做):

小吉吉来到一家焦糖蛋糕店,结果排队的人太多了,小吉吉感到非常无聊,于是灵机一动,就想自己写一个贪吃蛇来消磨时间。

相信大家小时候都写过贪吃蛇,那么就让我们自己写一个叭(不一定用Java编写,但是下面给的教程以及知识掌握是以Java为预设语言的)。

大概需要的知识:

  1. Java容器
  2. Java的GUI编写
  3. Java的定时器
  4. 键盘的监听
  5. lamda表达式(主要为了简化代码,未必用得到)
  6. Java并发编程(提高代码运行效率,但是未必要用到)

要求:

  1. 能够基本完成贪吃蛇的功能,吃了果实会变长,碰到自己的身体就会死等。
  2. 贴图最好不要粗制滥造,尽量美观一点。
  3. 能够记录吃了多少个果实,得到相应分数。
  4. 记录得分的排行榜,要求分数从高往低排列,不一定要记录名字,记个时间也不是不可。
  5. 如果只是在内存中存放排行榜,那么重新启动后就不会再看见你的排行榜了,想办法把它进行持久化吧!每次启动的时候可以把相应文件读入内存,这样每次启动就不会丢失你的分数了!
  6. 如果能够设置一定地形就最好了,如果产生随机地形的话就更棒了(但是要注意随机地形产生要避免死胡同的情况)。
  7. 一个好的游戏一定要有相应的难度梯度才行,你可以设置贪吃蛇移动的速度,也可以设置不同的关卡,全看你自由发挥。

只有要求一是必须完成的,其他都是加分项,代码规范也会放入评分标准,尽量写出规范美观的代码。

java游戏制作教程:https://zhuanlan.zhihu.com/p/59600990

可以参考百度、谷歌上相似的贪吃蛇项目,但是切忌照抄,发现照抄就不算分了哈,要有详尽的文档大概解释你的代码都干了什么,都怎么干。

题目二(大二做):

小吉吉突然想当一个作家,于是就写了几篇文章去投稿,结果没人要,小吉吉非常愤怒,就打算自己写一个文章网站,把自己的文章发表在上面,并且定下一个小目标,三年之内鲨了起点。

Java真正的优势还是在服务端的应用,想必你们经过大一一年的学习,或多或少会有一些基础,那么就来进行一个简单的CRUD编写吧。

那么问题来了:

独立完成文章模块后台接口的编写(带个前端html js界面更好)

大概需要的知识:

  1. Tomcat或者Spring等java基本框架的使用。
  2. 数据库的简单SQL语句编写。
  3. JDBC或者是Mybatis的使用。
  4. 可能需要一定前端知识——如果没有html页面可以用postman自测。

基本要求:

  1. 查看所有文章 (最好实现分页)
  2. 增加文章
  3. 删除文章
  4. 修改文章

文章数据表包括

  1. 标题

  2. 内容

  3. 一张图片

  4. 发布时间

可以用PostMan进行自测,请对你写的后端代码进行详尽的文档解释,文档格式、代码格式都会作为评判标准,如果可以部署到你自己的服务器上,那是再好不过了。

#12 虽然不知道发生了什么,但是先放一个flag在这儿总是没错的!

题目背景

两年前的一个晚上,小文凯做了一个自己变成了旅游社的导游拿着小旗吭哧吭哧爬上山之后发现走错路于是被狠心的游客从山顶推了下去的温馨美梦。两年后的今天,小文凯又回想起来了这个梦,并把这个梦告诉了自己的好哥们儿吉吉,吉吉于是把梦稍微加工了一下,做成了一个CTF平台

题目内容

不如先了解一下什么是CTF?应该怎么入门CTF呢?

靶场与比赛:

XCTF

CTFTIME

推荐书籍(only web):

《白帽子讲web安全》

《web安全深度剖析》

《web安全攻防》

《CTF特训营技术讲解、解题方法与竞赛技巧》

真正的任务(平台)

ctf.jotang.club:8000

剩下的说明都会放在平台里的 签到题 中,记得仔细阅读哟~

#13 等待焦糖,你的2048

题目背景

这天,小胡来到了焦糖西点屋,使用完手机端自助点餐后心满意足地坐在座位上,等待服务员端上香浓的焦糖玛奇朵和甜美的焦糖布丁。但正如著名算法工程师海涛所说:“有目标的等待是漫长的”,小胡在等甜品的过程中感到了不耐烦,于是打开了2048小游戏,但他感到这个游戏的广告太多了,他想玩一个纯净版的2048,所以你能帮帮他吗?

Tips:如果你还不知道什么是2048,这边有一个完成度很高的2048传送门

题目内容

你可能会感觉到不知道从哪里开始,但是没有关系!每个优秀的前端工程师都是从这一步开始的!

任务一

学习HTML和CSS,搭建一个简单的页面吧,内容包括:

  1. 个人介绍,包括但不限于你的兴趣爱好,你对未来的想法等等

  2. 照片和头像,如果你不愿意放自己的图片可以换成你喜欢的图片哦

  3. 你的学习记录,在这个阶段里你学到的东西,你遇到的困难都可以记录在这里,也可以加上在学习的过程中写的代码

参考资料:

在这个部分,你不必将页面做的尽善尽美完美无缺,而且我们并不限制你使用框架或者一些模板,在这个过程中理解HTML页面的组成和CSS如何让页面变得美观是最重要的

任务二

现在你已经认识到我们看到的五花八门的网页都是由什么构成的了,那么我们进入下一个阶段,开始写真正の代码

Javascript是一个十分热门的语言,它有着各种各样的缺点,但并不妨碍它应用广泛,并在Web时代成为页面交互、页面功能不可或缺的一部分,因为JavaScript,Web Page才进化成了Web App。

而且Javascript代码可以运行在浏览器环境中,你不需要额外安装其他环境或者IDE就可以编写和调试JS代码,在你的浏览器里按F12试试吧!

这里有一些基础教程,你可能用的到:

那么开始写自己的游戏2048!一库走!

要求如下:

  • 有一个计分板,可以显示当前的总分数

  • 4x4的方块矩阵,可以明显看出来不同的数字方块

  • 方块移动有动画,表现出来即可

  • 每次移动后都会在随机的空闲区域生成新的方块

  • 可以检查到Game over

  • 功能性优先,美观性其次(但是如果美观可以给加分哦!)

加分项:

  • 随着游戏的进行,你要怎样调整新的方块2和方块4出现的概率呢?

  • 如果意外关闭了页面,重新打开页面会复原吗?如果不会,怎样才能做到复原呢?

  • 如果从技术角度出发,哪些方面可以让这个游戏可玩性更强呢?请在回答中附上你的想法

可能你还是觉得一筹莫展,所以我们在这里给出一些提示:

  1. 每个方块是怎样移动的?你要通过什么手段让它“位置变化”?

  2. 如何检测到用户的键盘输入?用户键盘输入后要怎样处理?

  3. 两个相同的方块怎样才能达到“合并”的效果?

  4. 如何检测到Game over?

请在邮件中附上你的Markdown文档,内容包括你对本问题的思路解析和学习过程以及一些自己的想法,也可以附上你的代码(压缩包形式)或者给出GitHub链接

1 Like

#14 Algorithm

题一

在西点屋吃完甜点后,吉吉哥玩起了terraria。这时他要搭一些桥方便日后跑图,但他的材料有些紧张。吉吉是个讲究人,他不想造浮空桥,并且每个桥需要左右两端各一个支柱,高的桥的支柱可以从正下方的桥面上建起,给定高度和每段桥的开始结束位置,每格需要一个材料(桥面也是)问最少需要多少材料。

题目要求

输入格式:

第一行一个数字n,表示桥的个数

接下来n行,每行三个数字,分别为各个桥的高度h(地面为0)、开始位置x_start,结束位置x_end,中间用空格隔开

输出格式:

一个数字,表示需要的材料数量

输入示例:

3

3 1 2

2 4 6

5 2 4

输出示例:

17

数据范围:

1<= n <= 100, 1<= h <= 1000, 1<= x_start <= x_end <= 1000.

题二

多年以后,当曹导面对建设巷的时候,他一定会想起曾经疯狂喝奶茶的日子。在某日,曹导面前放了一个传送带,上面有n杯奶茶,每一杯里面奶茶的量x(1)…x(n)都不一定是相同的。这n杯奶茶从曹导面前过去。曹导每连续喝光两杯就要休息至少一杯移动过去的时间(指每连续喝两杯,后面这杯就不能喝)。问曹导最多可以喝到多少奶茶(mL)。

输入格式:

第一行一个数字n;

第二行n个数字,表示每杯中奶茶的量(mL),数字间用空格隔开

输出格式:

一个数字,表示最多可以喝到的奶茶的量(mL)

输入示例:

6

100 600 300 400 500 700

输出示例:

2100

数据范围:

1<= n <= 10^5, 0 <= x <= 10^4

小建议

第一题并不难,充分利用你所用的语言中的库函数(比如C++的STL),只需挺简洁的代码就解决这道题目。当然你要手写某些功能的函数展现自己扎实的基础功夫也行。(有基础的同学不需要被我的小小暗示束缚思路)
第二题是动态规划,不知道动态规划是什么的同学可以灵活运用搜索引擎
这两道题即使放在中学的OI竞赛中也只是第一题和第二题的难度哦,所以没接触过的同学也完全值得一试!!