您的位置:首页 > 其它

第2次实验——算法基本功 与 综合思考

2014-06-10 15:35 190 查看
第一题:实现快速排序,并与冒泡排序,归并排序进行比较!代码呈现如下:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class quickSort {
public static void main(String[] args) {
File file = new File("src/largeW.txt"); // 为了方便寻找文件,直接将文件放于工程的src文件中,同理后面的输出文件同样如此
if (file.isFile() && file.exists()) {
// 为了担心异常出现,这里使用异常捕获句式。
try {
InputStreamReader reader = new InputStreamReader(
new FileInputStream(file));
BufferedReader bufferedreader = new BufferedReader(reader);
List<String> list = new ArrayList<String>();
String isLine = "";
while ((isLine = bufferedreader.readLine()) != null) {
list.add(isLine);
}

int num[] = new int[list.size()];

for (int i = 0; i < list.size(); i++) {
num[i] = Integer.parseInt(list.get(i).trim());
}
bufferedreader.close();
long timeBegin = System.currentTimeMillis(); //快速开始时记录当时系统时间
quickSort(num, 0, num.length-1); // 此时进行快速排序
long timeEnd = System.currentTimeMillis(); // 快速结束后记录系统的时间

for (int i = 0; i < list.size(); i++) {
System.out.println(num[i]);
}
FileWriter filewriter = new FileWriter("src/largeW_bubble.txt");
for (int i = 0; i < num.length; i++) {
filewriter.write(String.valueOf(num[i]) + "   ");

}
filewriter.flush();
filewriter.close();
System.out.println("进行冒泡排序所消耗的时间为:" + (timeEnd - timeBegin)
/ 1000 + "s"); // 这里特意将时间单位转换为秒s
} catch (Exception e) {
e.printStackTrace();
}
}

}

// 快速排序的实现方法
public static void swap(int a[], int i, int j) {

if(i == j) return;

int tmp = a[i];

a[i] = a[j];

a[j] = tmp;

}

public static int partition(int array[], int low, int high) {
//当前位置为第一个元素所在位置
int first = low;
//采用第一个元素为轴
int pivot = array[first];

for (int i = low + 1; i <= high; i++) {

if (array[i] < pivot) {

first++;

swap(array, first, i);

}

}

swap(array, low, first);

return first;

}

public static void quickSort(int array[], int low, int high) {

if (low < high) {

int pivot = partition(array, low, high);

quickSort(array, pivot + 1, high);

quickSort(array, low, pivot - 1);

}

}

}


 

 

第四题:上招聘网站(如 51job、智联招聘)上查看自己感兴趣的职位与要求。作业要求:写下自己感兴趣工作的至少2个岗位名称(如Java程序员、搜索引擎工程师)、工作岗位具体要求、自身目前具备哪些条件、有哪些不足的地方并如何弥补。

           

本身职位的需求:

1.      
可能的岗位:android工程师 

 

2.      
根据岗位的需求的等级程度,不同的等级公司对应聘职位人的要求不同,有些正在起步或处于创业艰辛阶段,有些已经处于成熟发展期,故期对于职位人的具体要求是截然不同的,这里我根据不同公司的不同职位需求,分成三部分,也就是三种层次阶段:

 

⑴属于起步公司的应聘要求:

例一:

1.了解Java语言; 
2.了解Android开发框架,包括:各种UI组件,布局,Activity,Intent,SQLite,各   
类基础API; 
3.有过作品设计,作业设计或小项目开发经验; 
4.沟通表达和学习能力较好,具有较好的文档编写能力 ; 
5.能承担工作压力; 
6.英语四级或以上;

 

     例二:

      
你需要具备什么? 
1.为人真诚,性格开朗(需求被多次修改的情况下不对产品经理造成人身伤害); 
2.计算机、软件工程或相关专业本科学历; 
3.熟悉JAVA,熟悉Socket/HTTP编程,熟悉安卓客户端编程。 

你在这里将得到什么? 
1.一个有爱的工作环境和人文氛围; 
2.作为一名创业团队成员,独当一面开展工作的刺激体验; 
3.一份得体的薪酬; 
4.每天免费的健康午餐; 
5. 我们这艘方舟将刻上你的名字。

例三:

          
  1.大3或大4在读学生,每周不少于4天的课余时间; 
    2.对android/ios开发有所了解,有志于向该方向发展; 
    3.初步掌握相应开发工具的使用; 
    4.有良好的代码编写习惯,会写注释; 
    职责: 
    1.在技术负责人带领下完成智能手机、平板终端软件的开发与维护; 
    2.负责项目文档的编写;

 

 

(2)属于中期发展阶段:

例一:

         
 1. 完成软件系统代码的实现,编写代码注释和开发文档; 
    2. 辅助进行系统的功能定义,程序设计; 
    3. 根据设计文档或需求说明完成代码编写,调试,测试和维护; 
    4. 分析并解决软件开发过程中的问题; 
    5. 配合项目经理完成相关任务目标。 
    岗位要求: 
    1. 公司接受优秀应届毕业生、实习生; 
    2. 有扎实的java基础,有使用android
sdk和java的经验,熟悉android开发平台及框架原理; 
    3. 熟悉网络编程、多线程、图形界面编程、熟悉xml/json、http、tcp/ip、socket等协议; 
    4. 熟悉android网络通讯,有网络编程经验; 
    5. 有android作品者优先; 
    6. 具备需求分析和系统设计能力,以及较强的逻辑分析和独立解决问题能力; 
    7. 责任心强,具备良好的沟通能力和团队合作精神,能自觉完成任务。

 

例二:

  
        1、负责android智能手机平台应用软件的分析、设计、编码和测试; 
    2、负责android多线程处理,网络访问,数据库访问等功能特性的开发; 
    3、负责android
本地应用app开发,webapp开发等工作; 
    4、团队协作,配合项目经理的管理工作,高效完成app应用的功能开发。

例三:超级课程表

·                                
工作职责:
·                                
1、参与公司Android应用产品的开发和维护工作。
·                                
2、承担并独立完成开发主管分配的开发任务,并对交付质量负责。
·                                
3、配合开发主管,参与android应用架构的设计和规范化工作。
·                                
岗位要求:
·                                
1、熟悉Android开发平台的框架原理,精通Java编程技术,1-2年以上的       
Android实际开发经验,有过独立开发android APP的经验。
·                                
2、能够熟练使用Android SDK,熟练掌握Android网络应用软件开发和调试经验,精通安卓分辨率适配的解决方案。
·                                
3、熟悉Android下网络HTTP协议,XML、JSON、MessagePack解析等开发经验,具有丰富的UI开发经验。
·                                
4、有良好的代码习惯,要求结构清晰,命名规范,逻辑性强,冗余度低。
·                                
5、具备良好的团队合作精神、文档和沟通能力,较强的责任心,项目紧张时能自主加班,保证产品时间点的正常发布。
 

 

 

⑶属于成熟发展期的公司:

  
例一:TCL公司:

1、 根据系统设计和开发规范编写代码; 
2、负责软件的维护工作和对实施工程师的技术支持; 
3、编写相应的开发文档; 
4、一定的java开发及安卓平台的开发与调试; 
5、良好的学习能力,刻苦钻研精神; 
6、实习期十个月,优秀实习生可留任转正。 

任职资格: 
1、工作细心,能够承受压力; 
2、良好的沟通能力及团队协作意识; 
3、对软件开发比较热爱,有志向在软件行业发展; 
4、计算机等相关专业,精通C/C++/java编程语言,掌握Android平台的开发调试方法。

 

 
例二:UC浏览器

1.负责Android平台游戏客户端研发工作; 
2.负责平台兼容性、性能和资源优化的技术解决; 
3.负责系统、子系统和模块级的架构设计、概要设计工作; 
4.承担并推动团队内成员技术经验分享。
任职要求: 
1.计算机等相关专业本科及以上学历,两年以上Android工作经验; 
2.精通架构设计、概要设计和详细设计,熟练使用UML设计工具; 
3.有技术难题攻关经验,善于主动推动项目进展并达成项目目标; 
4.熟悉Java或C++语言,深入掌握Android下的NDK开发。
注:谢绝虚假简历,公司有严格的流程将对求职者做详尽的背景调查。
 

 

 

3.     
关于本人具备的条件:

     
基本符合了作为一个初级起步公司应聘要求,基本了解并理解了Java程序语言,而且经过一个学期对于android的学习,也基本掌握并熟悉应用了android的四大组件(Activity,broadcastReceiver,service,contentProvider),算是基本符合了最初需求。

 

4.     
本人所存在的不足:

    
先从严重的不足开始说吧:确实,一直对android相当感兴趣,尤其是对于android智能机的研究确实也很早就开始动手了,很多手机内置文件基本都掌握了其要领及作用。但是,真正从事android的开发工作是从这学期头开始的,所以都是从基础知识一步步走过来的,对于基础知识的掌握程度上还是足够的,但对于刚入门的人来说就有个严重的不足的地方就是,掌握的知识点不系统,没能达到很好的串连,而且确实在android开发的深度上也存在着一定的缺陷,但我一直觉得这只是时间问题,只要时间足够,并付诸更大的努力,一定为对于android的开发有着更深的理解和形成自己一套独特的方法的。

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: