(1)算法基本功——高速排序
对文件 largeW.txt(下载链接)中的数据,应用高速排序算法进行排序。并与冒泡排序、归并排序进行时间比較。体验算法复杂度对设计算法的影响。
以下是高速排序的代码和执行效果,冒泡排序、归并排序的代码和结果请參照我的还有一篇博文:http://blog.csdn.net/wanghaiping1993/article/details/22232293
package test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;</p><p>//高速排序
public class QuickSort {
public static void main(String[] args){
double start_all = System.currentTimeMillis();
String path = "txt/largeW.txt";
ArrayList<Integer> list=read(path);
double start = System.currentTimeMillis();
QuickSort quickSort = new QuickSort();
quickSort.quickSort(list,0,list.size()-1);
double end = System.currentTimeMillis();
System.out.println("高速排序时间为: " + (end - start)+"毫秒");
// 写入txt文件
double end_all = System.currentTimeMillis();
write(list);
System.out.println("写入完毕");
System.out.println("总执行时间为: " + (end_all - start_all)+"毫秒");
}
//创建并写入largeW_quick.txt文件
public static void write(ArrayList<Integer> list) {
File f = new File("txt/largeW_quick.txt");
FileOutputStream fou = null;
try {
fou = new FileOutputStream(f, false);// true,设置可追加</p><p> for (int i = 0; i < list.size(); i++) {
String s = String.valueOf(list.get(i));
String a = "" + s + "
";
// byte []bytes=new byte[1024];
// 怎样把string转换byte数组
fou.write(a.getBytes());</p><p> }
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
} finally {
try {
fou.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void quickSort(ArrayList<Integer> list,int first, int end){
if(first<end){
int pivot = partition(list,first,end);
quickSort(list,first,pivot-1);
quickSort(list,pivot+1,end);
}
}
public int partition(ArrayList<Integer> a, int first , int end){
int i = first; int j = end;
while(i<j){
while(i<j&&a.get(i)<=a.get(j))j--;
if(i<j){
int temp;
temp = a.get(i);
a.set(i, a.get(j));
a.set(j, temp);
i++;
}
while(i<j&&a.get(i)<=a.get(j))i++;
if(i<j){
int temp;
temp = a.get(j);
a.set(j, a.get(i));
a.set(i, temp);
j--;
}
}
return i ;
}
//读取文件到int数组
public static ArrayList read(String path) {
ArrayList<Integer> list = new ArrayList<Integer>();
BufferedReader input = null;
try {
FileReader in = new FileReader(path);
input = new BufferedReader(in);
String ss;
try {
while ((ss = input.readLine()) != null) {
String[] s = ss.split("
");
for (int i = 0; i < s.length; i++) {
list.add(Integer.parseInt(s[i].trim())); // 将String s中的内容加入到动态数组中
}
}
} catch (IOException e) {
// TODO 自己主动生成的 catch 块
e.printStackTrace();
}
in.close();
input.close();
} catch (Exception e) {
// TODO 自己主动生成的 catch 块
e.printStackTrace();
}</p><p> return list;
}
} 结果:
排序后的结果:
(2)经典算法面试题(至少选择当中1道题并作答,有自己的思考与理解)
- 有A、B、C、D四个人。要在夜里过一座桥。
他们通过这座桥分别须要耗时1、2、5、10分钟,仅仅有一支手电。而且同一时候最多仅仅能两个人一起过桥。
请问。怎样安排。可以在17分钟内这四个人都过桥?
解答: 方法是:思路就是一定要让1。2分钟的人来送电筒。
方案一:
过河去: 1。2分钟的人 总耗时2
回来送手电筒: 1分钟的人 总耗时3
过河去: 5,10分钟的人 总耗时13
回来送手电筒: 2分钟的人 总耗时15
过河去: 1。2分钟的人 总耗时17
方案二:
过河去: 1。2分钟的人 总耗时2
回来送手电筒: 2分钟的人 总耗时4
过河去: 5,10分钟的人 总耗时14
回来送手电筒: 1分钟的人 总耗时15
过河去: 1。2分钟的人 总耗时17
(4)实习与工作
上招聘站点(如 51job、智联招聘)上查看自己感兴趣的职位与要求。
作业要求:写下自己感兴趣工作的至少2个岗位名称(如Java程序猿、搜索引擎project师)、工作岗位详细要求、自身眼下具备哪些条件、有哪些不足的地方并怎样弥补。
感兴趣的岗位1:JAVA软件project师
详细要求:
公司一:
计算机相关专业本科以上学历
熟练掌握Linux或Windows操作系统
熟悉Internet/Intranet相关技术、数据库技术
对JAVA/JSP的应用环境有较好的了解,有实践经验者优先
具有HTML,Javascript的开发基础,熟悉网页制作
具有较好的服务意识、沟通能力、责任心强、学习能力强
公司二:
1、本科或以上学历,计算机相关专业毕业,2年以上Java编程经验,有B/S软件开发经验;
2、熟悉Struts、Spring、Hiberate 等主流开源框架;
3、熟悉Dwr、ExtJS等JavaScript、Ajax框架;
4、熟悉Weblogic、Tomcat等应用server的部署与配置;
5、掌握Sqlserver、Mysql等关系类型数据库;
6、熟练使用开发工具Eclipse,SVN等。
7、优先考虑熟悉JBPM和EXTJS者。
公司三:
熟练掌握Linux或Windows操作系统
熟悉Internet/Intranet相关技术、数据库技术
对JAVA/JSP的应用环境有较好的了解,有实践经验者优先
具有HTML,Javascript的开发基础,熟悉网页制作
具有较好的服务意识、沟通能力、责任心强、学习能力强
感兴趣的岗位2:WEB前端开发project师
详细要求:
公司一:
1、依据项目需求,高效和高质的完毕代码编写;
2、配合开发project师,以确保代码有效对接;
3、与设计师密切配合,实现符合用户体验的交互效果;
任职要求:
1、 精通W3C标准及规范,熟练掌握Html,Css,Javascript;
2、 熟练掌握 jquery;
3、 可以轻松解决各浏览器兼容问题。
4、 了解使用过 angularjs 或 backbonejs 或 durandaljs 等MV*框架 (一种或以上) 。
5、 对Web技术专研有强烈兴趣。有较强的学习能力,良好的沟通能力和团队合作精神;
优先录取项:
1、 了解或实践过响应式页面,具备一定的移动web开发经验。
2、 熟悉使用bootstrap 或 foundation 等前端框架(一种或以上).
3、 熟悉使用 Sass 或Less 等CSS预处理器(一种或以上)。
公司二:
公司三:
眼下我具备的条件
1,对学习了jsp,对spring,hibernate,struct有所了解但不精通。
2.会基本html,javascript,css+div,jquery技术
3.会简单使用photoshop,dreamweaver,eclipse等工具的使用。
不足:对这些专业知识学的不精通。了解皮毛,对于真正就业的要求还是有差距的。
补充自己的不足:趁如今还有半年在学校的机会。依据公司的要求一一的去强化自己的知识技能,尽可能的达到公司就业的要求。另外,利用尽力在暑假找一个实习的机会,然后更加近距离的接触社会,从而发现自己的不足来改进自己。