Java软件工程师主要学习哪些课程?
01、Java基础
创新互联建站主要从事网站制作、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务龙海,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
认真看一遍 Java核心技术卷一,会常见的集合类用法,最主要两个 ArrayList 和 HashMap,水平到可以刷 leetcode easy 和一些集合类操作的 medium 就OK。其中更进一步可以看看 ArrayList 的源码(这部分源码几乎没有什么难点),有助于理解接口和抽象类的使用。
另外,针对目前主要的Java面试,我觉得Java内存模型、GC、线程安全、线程池这些需要了解,不管面试会不会问,至少应该要知道Java有这些东西,可以通过看深入理解Java虚拟机和Java并发编程实战补充这部分知识,实习工作应该不会接触到这些,但还是那句话,这些概念要知道。
02、熟悉一个数据库和基本SQL语句
数据库主流就是MySQL了,熟悉MySQL的安装、启动、可视化工具(workbench、navicat等),知道什么是隔离级别,SQL语句会写基本的select,insert,update和两张表的 inner join,外加增加字段、修改字段的ddl语句,理解索引原理和innodb特点。这里有条件的可以用学生价买一个云主机,国内阿里云腾讯云都行,熟悉在 CentOS 或者是 Ubuntu 里命令行安装和使用MySQL。
另外,作为拓展,可以去了解一下redis的基本使用,作为现在大热的组件,其实却非常容易上手,一些技术面试很喜欢问。
03、了解一个Java Web框架
推荐 Spring+SpringMVC+Mybatis(我不太推荐一上来就学 Sping Boot),先自己本地搭建一个这样的环境。
有个很好的学习地方就是github,例如:手把手教你整合最优雅SSM框架,跟着这种教程一步一步耐心的配置一个web开发环境。对于Spring重点理解 IOC和AOP。
推荐使用 Intellij IDEA 进行编码,学会 Git 的使用,命令包括切换分支、创建分支,add、commit、push、merge(理解什么叫conflict和怎么修复),不论是用命令行还是IDEA提供的图形界面都可以,我强烈推荐后者,因为用过你就知道它有多好用。
04、了解一点前端知识
这里以我的经验来讲,你需要会简单 html、css、js(angularjs 1.x)和 jQuery,其中前两者你还需要知道一个 bootstrap,根据文档能用它的组件实现你需要的效果,你学习这些东西要多久呢?可能三天吧。。。只需要知道其中最基本的写法,能实现项目中的需求,如果之后工作遇到不会的随时可以百度学习,所以我觉得这不算很艰巨的任务。
05、基于SSM框架实现一个项目
用烂的就是网上书店、个人博客这类,虽然老掉牙,但是对熟悉数据库操作、训练增删改查的业务逻辑编写却屡试不爽,其中你需要注意的一些点:
代码风格,包括驼峰命名法、数据库字段、类型、表名等的设置,注意面向接口而不要面向实现编程。
MVC 究竟在干吗,我dao、service里写的代码怎么差不多啊,那为什么要做两层?controller里需要做些什么?
再深入(对于题主需求可能可以忽略但需要了解),登录时的密码存储怎么做?明文么?session管理怎么搞?事务配置怎么设置?我怎么url一变直接跳进后台了,这部分怎么做权限控制?前端分页、后端分页都是怎么弄的等等
最后,将你的应用发布到你买的云主机上试试,熟悉基本的 cd、tar、scp、vi、vim、tomcat配置运行等基本命令,有助于之后的实习工作
06、刷一些简单的手写算法题
这些程序员面试中几乎不可避免,高频的题目无非就是快排、二分查找、topK、二叉树三种遍历、两个栈模拟队列等等。
怎样实现以下算法
死循环相信没什么问题,这个题目就是随机生成数据,然后找出是否有相同的数据的过程。如果是简单的循环类代码,就是类似穷举法,一个个比较的过程;但是如果写的优雅一些,实际上是一个排序过程。
我们来回忆一下排序的过程,从最简单的冒泡、选择,到最高级的快排、归并,每一个排序实际上都进行了比较。那么我们只需要在自定义的比较函数中对值进行输出即可。
一般语言中都会内置排序函数,例如C的qsort、JavaScript的Array.prototype.sort、PHP的usort等。都支持传入自定义的比较函数。下面以C举例:
#includestdlib.h
#includestdio.h
#define NUM 20
int has_equals = 0;
typedef struct item { /* 数据元素结构体 */
int val; /* 整数值,用于比较 */
int idx; /* 记录初始化时的位置,用于输出用 */
} Item;
void initData(Item *arr, int len) {
int i;
printf("======RANDOM DATA======\n");
for (i = 0; i len; i++) {
arr[i].val = rand() % 100; /* 一百以内的随机数 */
printf("%d ", arr[i].val);
arr[i].idx = i;
}
printf("\n");
}
int myCmp(const void *va, const void *vb) {
Item *a = (Item *)va;
Item *b = (Item *)vb;
if (a-val == b-val) { /* 两个值相等,输出 */
printf("Found Equals: items[%d]==items[%d]==%d\n",
a-idx, b-idx, a-val);
has_equals = 1; /* 标记找到相等的值 */
}
return a-val - b-val;
}
void main() {
Item items[NUM];
while (1) {
has_equals = 0; /* 重置找到重复标记 */
initData(items, NUM);
qsort(items, NUM, sizeof(Item), myCmp);
if (!has_equals) {
printf("++++++Every Item is unique++++++\n");
break;
}
}
printf("Bye.\n");
}
当数据有重复的时候会输出重复项,并标记重复标志。C语言中没有Exception机制,所以排序完成后再进行处理,不能中断排序过程(也可以使用LongJump)。其他语言中都有Exception机制,可以直接在检查到第一个相等之后就抛异常,外层捕获异常做逻辑即可。
ASP VBSCRIPT 对变量如何排序?
1、把all转换为数组
是用数组的方法来排序
javascript中可以用sort方法来排序,vbs我不清楚
2、把all转换为数组,使用冒泡算法
3、空间换时间,每一个用户增设一个字段用于记录发帖的总量
网页名称:快排javascript,摩托车快排
链接地址:http://lswzjz.com/article/dsohgde.html