@AlexZFX
2018-09-23T03:29:22.000000Z
字数 5435
阅读 295
先做些简单的介绍,软件应用程序就像冰山一样。用户看到的只是应用程序的一部分——在大多数情况下——应用程序的最大部分是看不到的。这就是令人难以捉摸又神秘的“后端”(其实很瓜皮,自己练手的时候没有好看的页面很难受)。
从某些方面来说,我们这里考虑后端开发是一种不涉及创建生成用户界面的开发,这可能包括后端Web开发,可能也涉及编写API,创建库或和没有用户界面或甚至科学编程系统的系统组件一起工作。
可用来后台开发的语言有很多,Go、Java、Python、php、Scala、C++等等,各种语言都有自己的一些适用场景和各自的优缺点。
创联工作室的后台组使用的主要语言是Java。
参与选题及出题:萌涛,风Gay,文哥,付小帅,凌小贱
参考书籍:《Java语言程序设计(基础篇)》,《Head first Java》
参考视频:中国大学慕课翁凯老师的Java课程。imooc上的Java基础教程
以下的所有问题,你都可以通过一定的搜索来解决,但我们希望你能有自己的理解,不要只是答出了题目,毕竟后面还是要面试的(⊙o⊙)?、
大一大二的同学要求不同,基础和主线任务有一部分要循序渐进,支线任务可以作为加分手段!~
欢迎来到Java,让我们从Hello World!
开始进入Java的世界吧!
Hello World!
知识点
公欲善其事,必先利其器,学习使用IDE是提升开发效率的好方法。
Hello, xxx
~。知识点
一共两道小题都要做哦
知识点
知识点
知识点
好了,Java语言的基本语法和操作你应该都有所了解了,接下来就要比起之前稍微麻烦一点啦。
主线任务主要是Java后台方向的需要了解的基础知识,和后台相关较大,支线任务会提供一些简单的数据结构(大二上开课)题,作为加分使用。
你有对象么?面向对象就有了啊!
Java是一门典型的面向对象的语言,在Java的世界里,万物都是对象。
假设你是封魔录中的英雄,你需要在封魔的过程中不断打怪升级从而走上人生巅峰,现在请你通过Java编程实现你与在路上遇到妖魔的战斗过程,我给你的分数取决于你代码的精彩程度,只要你的功能够丰富,我就敢给你打高分。(希望能尽可能体现Java面向对象的特性)
Tips: 英雄类?妖魔类?(抽象在一起?)战斗?
知识点
Java流行的原因非常多,其丰富的类库便是其中之一
1. Two Sum
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
示例
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
模板代码如下
class Solution {
public int[] twoSum(int[] nums, int target) {
}
}
知识点
是时候了解一下网页相关的知识了。作为一个后端程序员,你可能不需要知道怎么把页面写的花哨,但你总该知道一个别人的请求怎么发送出来的嘛~
1. 了解Http协议相关知识,了解get,post等请求方式。
2. 学习一些html相关知识,写一个能够发送用户的账号、密码的表单页面。
知识点
知道了怎么发送请求,那Java如何处理基础的网络请求呢?
1. 学习Servlet、JSP相关知识,Tomcat的安装、配置。
2. 编写一个Servlet和JSP页面,能够收到页面发来的post请求,并将用户的账号,密码打印在控制台上,同时JSP页面展示出Hello xxx
相关内容。
知识点
做后端的,总是避免不了要和数据库打交道,所以先来简单的学习一下数据库的基本操作吧。
Id | Name |
---|---|
1 | 张三 |
2 | 李四 |
3 | 张三 |
根据以上的数据表,你的查询应该返回以下结果
Name |
---|
张三 |
知识点
你已经会一些简单的数据库操作了,现在不妨来试试怎么用Java操作数据库吧?
知识点:
完成了5和6,那你已经有了做一个自己网站的最基础的能力~
把他们结合起来吧~
知识点
部分数据结构简单题,后台相关的其他技能点
自己代码发生了哪些变化,做了哪些改动,可能写了一天就啥都不记得了,但开发过程中,想要回退到自己以前的代码怎么办呢?可见版本控制是很重要的一环。
多人合作也是开发过程中不可避免的一环,合作过程中就需要对各自的代码的同步,编辑。
所以是时候去了解学习一下优秀的Git啦。
参考教程:廖雪峰的Git教程
任务
知识点
数组中的插入和删除好像都是一件很麻烦的事,删除一个位置上的数,就要移动很多其他的数字~
有没有什么更好的方法提高插入和删除操作的效率呢?
不妨去了解一下链表吧。和数组这样的存储结构对比学习效果更佳~
/**
* Definition for singly-linked list.
* class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode detectCycle(ListNode head) {
}
}
知识点
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class BuildTree {
public TreeNode buildTree(int[] inorder, int[] postorder) {
}
}
知识点
在学习这些东西之前,要记得先学习一下Java的包管理工具Maven或者Gradle哦~。可以给你带来~
Spring的出现使Java迎来又一“春”,极大的方便了Java开发,是一个提供了完善开发环境的框架,而SpringMVC是基于Spring功能,结合MVC模式的Web框架。
任务:
知识点
对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。
能够掌握好orm框架的使用可以提升很多你的开发效率。
知识点
框架帮我们做了许多事情,就会导致我们忽视一些东西。多线程也是Java编程中重要的一部分。学习理解一下Java并发编程吧。
阻塞队列就是一个支持两个附加操作的队列。这两个附加操作支持阻塞的插入和移除方法。
public class BlockingQueue<E> {
public BlockQueue(int capacity){
}
public void put(E e){
}
public E take(){
}
}
知识点
在遇到一些耗时任务时,为了不影响服务响应的速度,我们往往会另外开一个线程去执行这项任务,先返回一个正在处理的状态。而当这样的请求多了的时候,线程的反复创建和销毁会带来大量的无意义的资源消耗。为了解决这类问题,我们往往会通过一个线程池来存储建好的线程,使用时直接提供(数据库连接的建立很耗时,所以也会用数据库连接池来保持连接)。
任务:
public interface ThreadPool<Job extends Runnable> {
// 执行一个Job,这个job需要实现Runnable接口
void execute(Job job);
// 关闭线程池
void shutdown();
// 增加工作者线程
void addWorkers(int num);
// 减少工作者线程
void removeWorker(int num);
// 得到正在等待执行的任务数量
int getJobSize();
}
知识点