(全)面试 面试软件开发工程师 算法题 含答案.docx

上传人:夺命阿水 文档编号:489778 上传时间:2023-07-26 格式:DOCX 页数:24 大小:26.53KB
返回 下载 相关 举报
(全)面试 面试软件开发工程师 算法题 含答案.docx_第1页
第1页 / 共24页
(全)面试 面试软件开发工程师 算法题 含答案.docx_第2页
第2页 / 共24页
(全)面试 面试软件开发工程师 算法题 含答案.docx_第3页
第3页 / 共24页
(全)面试 面试软件开发工程师 算法题 含答案.docx_第4页
第4页 / 共24页
(全)面试 面试软件开发工程师 算法题 含答案.docx_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《(全)面试 面试软件开发工程师 算法题 含答案.docx》由会员分享,可在线阅读,更多相关《(全)面试 面试软件开发工程师 算法题 含答案.docx(24页珍藏版)》请在课桌文档上搜索。

1、面试面试软件开发工程师算法题含答案1 .编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。答:packagecn.itcast;importjava.io.File;importjava.io.FileReader;importjava.io.FiIeWriter;publicclassMainClasspublicstaticvoidmain(Stringargs)throwsExceptionFiIeManagera=newFileManager(na.txtnznewchar

2、n);FiIeManagerb=newFileManager(b.txtnewchar,n/);FiIeWriterc=newFileWriter(c.txt);StringaWord=null;StringbWord=null;while(aWord=a.nextWord()!=null)c.write(aWord+,);bWord=b.nextWord();if(bWord!=null)c.write(bWord+n);)while(bWord=b.nextWord()!=null)c.write(bWord+,);)c.close();)classFileManagerStringwor

3、ds=null;intpos=0;publicFileManager(Strigfilenamezcharseperators)throwsExceptionFilef=newFile(filename);FiIeReaderreader=newFileReader(f);charbuf=newchar(int)f.length();intIen=reader.read(buf);Stringresults=newString(bufzOJen);Stringregex=null;if(seperators.length1)regex=nn+seperators0+nn+seperatorsl

4、;elseregex=nn+seperators0;words=results.split(regex);)publicStringnextWord()if(pos=words.length)returnnull;returnwordspos+;)2 .编写一个程序,将d:java目录下的所有JaVa文件复制到d:jad目录下,并将原来文件的扩展名从JaVa改为Jad.(大家正在做上面这道题,网上迟到的朋友也请做做这道题,找工作必须能编写这些简单问题的代码!)答:IistFiIes方法接受一个FiIeFiIter对象,这个FiIeFiIter对象就是过虑的策略对象,不同的人提供不同的FiIeF

5、iIter实现,即提供了不同的过滤策略。importjava.io.File;importjava.io.FilelnputStream;importjava.io.FileOutputStream;importjava.io.FiIenameFiIter;importjava.io.IOEception;importjava.io.InputStream;importjava.io.OutputStream;publicclassJad2Javapublicstaticvoidmain(Stringargs)throwsExceptionFilesrcDir=newFile(,java);i

6、f(!(srcDir.exists()&SrcDirJsDirectoryO)thrownewEXCePtion(目录不存在”);Filefiles=srcDir.listFiles(newFilenameFilter()publicbooleanaccept(FiledirzStringname)returnname.endsWith(,.java););System.out.println(files.length);FiledestDir=newFile(,jadn);if(!destDir.exists()destDir.mkdir();for(Filefiles)FiIeInputS

7、treamfis=newFileInputStream(f);StringdestFiIeName=f.getName().replaceAII(,.javaSz,.jad);FileoutputStreamfos=newFileOutputStream(newFile(destDirzdestFileName);copy(fiszfos);fis.close();fos.close();privatestaticvoidcopy(InputStreamipszOutputStreamops)throwsExceptionintIen=0;bytebuf=newbyte1024;while(l

8、en=ips.read(buf)!=-1)ops.write(bufzOJe);)由本题总结的思想及策略模式的解析:1.classjad2java1 .得到某个目录下的所有的java文件集合1.1 得到目录FilesrcDir=newFile(d:javan);1.2 得到目录下的所有java文件:Filefiles=srcDir.listFiles(newMyFiIeFiIterQ);1.3 只想得到JaVa的文件:classMyFiIeFiIterimpIememytsFileFilterpublicbooleanaccept(Filepathname)returnpathname.get

9、Name().endsWith(,.java)2,将每个文件复制到另外一个目录,并改扩展名2.1 得到目标目录,如果目标目录不存在,则创建之2.2 根据源文件名得到目标文件名,注意要用正则表达式,注意.的转义。2.3 根据表示目录的FiIe和目标文件名的字符串,得到表示目标文件的Fileo要在硬盘中准确地创建出一个文件,需要知道文件名和文件的目录。2.4 将源文件的流拷贝成目标文件流,拷贝方法独立成为一个方法,方法的参数采用抽象流的形式。方法接受的参数类型尽量面向父类,越抽象越好,这样适应面更宽广。)分析IiStFileS方法内部的策略模式实现原理FilelistFiles(FileFilte

10、rfilter)Filefiles=IistFiIesO;/ArraylistacceptedFiIesList=newArrayList();FileacceptedFiles=newFiIeffiIesJength;intpos=0;for(Filefile:files)booleanaccepted=filter.accept(file);if(accepted)/acceptedFilesList.add(file);acceptedFilespos+=file;Arrays.copyOf(acceptedFileszpos);/retur(File)accpetedFilesList

11、.toArray();)3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如我ABC”,4,应该截取我AB”,输入我ABC汉DEF,6,应该输出我ABU,而不是我ABC+汉的半个。答:首先要了解中文字符有多种编码及各种编码的特征。假设n为要截取的字节数。publicstaticvoidmain(Stringargs)throwsExceptionStringstr=我a爱中华abc我爱传智def;StringStr=我ABC汉”;intnum=trimGBK(str.getBytes(GBK),5);System.outprintln(

12、str.substring(Oznum);publicStaticinttrimGBK(bytebufzintn)intnum=O;booleanbChineseFirstHalf=false;for(inti=0;in;i+)(if(bufi0&!bChineseFirstHalf)bChineseFirstHalf=true;elsenum+;bChineseFirstHalf=false;)returnnum;4.有一个字符串,其中包含中文字符.英文字符和数字字符,请统计和打印出各个字符的个数。答:哈哈,其实包含中文字符、英文字符、数字字符原来是出题者放的烟雾弹。Stringconten

13、t=中国aadf的Ill萨bbb菲的zz萨菲”;HashMapmap=newHashMapO;for(inti=0;icontent.length;i+)(charc=contentcharAt(i);Integernum=map.get(c);if(num=null)num=1;elsenum=num1;map.put(cznum);for(Map.EntrySetentry:map)system.out.println(entry.getkey()+entry.getValue();)估计是当初面试的那个学员表述不清楚,问题很可能是:如果一串字符如匕aaabbc中国1512”要分别统计英文

14、字符的数量,中文字符的数量,和数字字符的数量,假设字符中没有中文字符、英文字符、数字字符之外的其他特殊字符。intengishCount;intChineseCount;intdigitCount;for(inti=O;i=z0,&ch=xa,&ch=A&ch=T)(engishCount+;)else(ChineseCount+;)System.out.println();5、说明生活中遇到的二叉树,用java实现二叉树这是组合设计模式。我有很多个(假设10万个)数据要保存起来,以后还需要从保存的这些数据中检索是否存在某个数据,(我想说出二叉树的好处,该怎么说呢?那就是说别人的缺点),假如存

15、在数组中,那么,碰巧要找的数字位于99999那个地方,那查找的速度将很慢,因为要从第1个依次往后取,取出来后进行比较。平衡二叉树(构建平衡二叉树需要先排序,我们这里就不作考虑了)可以很好地解决这个问题,但二叉树的遍历(前序,中序,后序)效率要比数组低很多,原理如下图:代码如下:packagecom.huawei.interview;publicclassNodepublicintvalue;publicNodeleft;publicNoderight;publicvoidstore(intvalue)if(valuethis.value)(if(right=null)right=newNode

16、();right.value=value;)else(right.store(value);)publicbooleanfind(intvalue)(System.out.println(happen+this.value);if(value=this.value)(returntrue;elseif(valuethis.value)if(right=null)returnfalse;returnright.find(value);else(讦(Ieft=null)returnfalse;returnleft.find(value);)publicvoidpreList()(System.ou

17、t.print(this.value+if(left!=null)left.preList();讦(right!=nuH)right.preList();publicvoidmiddleList()(if(left!=null)left.preList();System.out.print(this.value+讦(right!=null)right.preList();)publicvoidafterList()(if(left!=null)left.preList();if(right!=null)right.preList();System.out.print(this.value+)p

18、ublicstaticvoidmain(Stringargs)intdata=newint20;for(inti=0;idata.length;!+)(datai=(int)(Math.random()*100)+1;System.outprint(datai+,z);)System.outprintln();Noderoot=newNode();root.value=data0;for(inti=l;ithis.value)(if(right!=null)right.add(value);else(Nodenode=newNode(value);right=node;)left.add(va

19、lue);else(Nodenode=newNode(value);left=node;)publicbooleanfind(intvalue)if(value=this.value)returntrue;elseif(valuethis.value)if(right=null)returnfalse;elsereturnright.find(value);if(left=null)returnfalse;elsereturnleft.find(value);)publicvoiddisplay()System.outprintln(value);if(left!=null)left.disp

20、lay();if(right!=null)rightdisplay();)*publicIteratoriterator()*/publicstaticvoidmain(Stringargs)intvalues=newint8;for(inti=0;i8;i+)intnum=(int)(Math.random()*15);/System.out.printl(num);/if(Arrays.binarySearch(valuesznum)O)if(!contais(valuesznum)valuesi=num;elsei-;)System.outprintln(Arrays.toString(values);Noderoot=newNode(values0);for(inti=l;iVaIuesJengthj+)root.add(valuesi);)System.outprintln(root.find(13);root.display();publicstaticbooleancontains(intarrjntvalue)inti=0;for(;iarr.length;i+)if(arri=value)returntrue;)returnfalse;)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号