还剩18页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
面试软件开发工程师算法题含答案、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重1复的次数,并按重复次数排序张三L28李四2,,35张三3,28王五4,,35张三5,,28李四6,35赵六7,,28田七8,,35程序代码如下(答题要博得用人单位的喜欢,包名用该公司,面试前就提前查好该公司的网址,如果查不到,现场问也是可以的还要加上实现思路的注释)package com.huawei.interview;public classSingleTon{private SingleTon{〃实例化放在静态代码块里可提高程序的执行效率,但也可能更占用空间private finalstatic SingleToninstance=new SingleTon;public staticSingleTon getlnstance{return instance;第二种饥汉模式public classSingleTon{private SingleTon{}private static instance=null;//newSingleTon;public staticsynchronized SingleTongetInstance{二二ifinstance nullinstance=new SingleTonQ;return instance;第三种用枚举public enumSingleTon{ONE;第三更实际的应用在什么情况用单例public classSequenceGenerator{〃下面是该类自身的业务功能代码private intcount=0;public synchronizedint getSequence{++count;〃下面是把该类变成单例的代码private SequenceGenerator{}private finalstaticinstance=newSequenceGenerator;public staticSingleTon getlnstance{return instance;第四public classMemoryDaoprivate HashMapmap=new HashMapO;publicvoid addStudentstul{map.putSequenceGenerator.getInstance.getSequence stul/;〃把变成单例MemoryDao模式主要作用是保证在应用程序中,一个类只有一Singleton JavaClass个实例存在一般模式通常有几种种形式Singleton第一种形式定义一个类,它的构造函数为的,它有一个的private static的该类变量,在类初始化时实例话,通过一个的private publicgetlnstance方法获取对它的引用,继而调用其中的方法public classSingleton{private Singleton{}〃在自己内部定义自己一个实例,是不是很奇怪?〃注意这是只供内部调用privateprivate staticSingleton instance=new Singleton;〃这里提供了一个供外部访问本的静态方法,可以直接访问classpublic staticSingletongetlnstanceQ{return instance;第二种形式:public classSingleton{private staticSingletoninstance=null;public staticsynchronized Singletongetlnstance{〃这个方法比上面有所改进,不用每次都进行生成对象,只是第一次〃使用时生成实例,提高了效率!if instance==nullinstance=new Singleton;return instance;其他形式定义一个类,它的构造函数为的,所有方法为的private static一般认为第一种形式要更加安全些、递归算法题31一个整数,大于,不用循环和本地变量,按照的顺序递增,0n,2n,4n,8n当值大于时,把值按照指定顺序输出来5000例n=1237则输出为1237,2474,4948,9896,9896,4948,2474,1237,提示写程序时,先致谢按递增方式的代码,写好递增的以后,再增加考虑递减部分public staticvoid doubleNumintnSystem.out.printlnn;ifn=5000doubleNumn*2;System.out.printlnn;GaibaotaN=GaibaotaN-l+n、递归算法题42第个人,第个比第个人大岁,依次递推,请用递归方式计110212算出第个人多大?8package cn.itcast;import java.util.Date;publicclass Al{public staticvoidmainString[]argsSystem.outprintlncomputeAge8;public staticint computeAgeintnifn==lreturn10;returncomputeAgen-l+2;public staticvoidtoBinaryint n,StringBuffer resultifn/2!=0toBinaryn/2result;zresult.appendn%2;、排序都有哪几种方法?请列举用实现一个快速排序5JAVA本人只研究过冒泡排序、选择排序和快速排序,下面是快速排序的代码:public classQuicksort{/**快速排序**@param strDate*@param left*@param right*/public voidquickSortString[]strDatejnt leftjntright{String middletempDate;zint ij;i=left;j=right;middle=strDate[i+j/2];do{whilestrDate[i].compareTomiddle0iright〃找出左边比中间值大的数i++;whilestrDate[j].compareTomiddle0jleft〃找出右边比中间值小的数j--;〃将左边大的数和右边小的数进行替换ifi=j{tempDate=strDate[i];strDate[i]=strDate[j];strDate[j]=tempDate;;i++;j-二〃当两者交错时停止}whilei j;〃从ifiright{quickSortstrDate,i,right;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import javaJo.InputStreamReader;import java.util.Comparator;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.T reeSet;publicclass GetNameTest{/***@paramargspublic staticvoidmainString[]args{quickSortstrDate,left,j;/***@param args*/public staticvoid mainString[]args{String[],,,,,,,,,,,,strVoid=newString[]{ll6622,055,220,32};1,,,Quicksort sort=new QuickSort;sort.quickSortstrVoid O,strVoid.length-1;zforint i=0;istrVoiddength;i++{System.out.printlnstrVoid[i]+;//Inputstream ips=GetNameTest.class.getResourceAsStream7com/huawei/internview/info.txt;〃用上一行注释的代码和下一行的代码都可以,因为与info.txt类在同一包下面,所以,可以用下面的相对路径形式GetNameTestMap results=new HashMapO;二Inputstream ips,HGetNameTest.class.getResourceAsStream info.txt;BufferedReader in=newBufferedReadernew InputStreamReaderips;String line=null;try whileline=in.readLine!=nulldealLineline,results;sortResultsresults;}catch lOExceptione{〃TODO Auto-generated catchblocke.printStackTrace;static classUserpublic String name;public Integer value;public UserStringnamejntegervaluethis.name=name;this.value=value;©Overridepublic booleanequalsObjectobj{〃TODO Auto-generated methodstub〃下面的代码没有执行,说明往中增加数据时,不会使用到treeset equals方法boolean result=super.equalsobj;System.out.printlnresult;return result;private staticvoidsortResultsMap results{//TODO Auto-generated methodstubTreeSet sortedResults=newTreeSetnew Comparator{public intcompareObjectol Objecto2{zUser userl=Userol;User user2=Usero2;/*如果返回结果,则认为两个对象相等,新的对象不会增加compareTo0到集合中去*所以,不能直接用下面的代码,否则,那些个数相同的其他姓名就打印不出来**///returnuserl.value-user
2.value;//returnuserl.valueuser
2.value-l:userl.value==user
2.value0:1;ifuserl.valueuser
2.valuereturn-1;}else ifuserl.valueuser
2.valuereturn1;}elsereturnuseri.name.compareTouser
2.name;;Iterator iterator=resuIts.keySetO.iterator;whileiterator.hasNextString name=Stringiterator.next;Integer value=Integerresults.getname;if value1sorted Results.addnewUsername value;zprintResultssortedResults;private staticvoidprintResultsTreeSet sortedResultsIteratoriterator=sortedResults.iterator;whileiterator.hasNextUser user=Useriterator.next;System.out.printlnuser.name+user.value;public staticvoiddealLineString lineMap mapzHnif!.equalsline.trim;String[]results=line.splitifresults.length==3Stringname=results[l];Integervalue=Integermap.getname;if value==nullvalue=0;map.putname value+1;z写一个出来
2.Singleton第一种饱汉模式。