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

上传人:lao****ou 文档编号:585833 上传时间:2024-02-19 格式:DOCX 页数:24 大小:29.08KB
下载 相关 举报
全面试 面试软件开发工程师 算法题 含答案.docx_第1页
第1页 / 共24页
全面试 面试软件开发工程师 算法题 含答案.docx_第2页
第2页 / 共24页
全面试 面试软件开发工程师 算法题 含答案.docx_第3页
第3页 / 共24页
全面试 面试软件开发工程师 算法题 含答案.docx_第4页
第4页 / 共24页
全面试 面试软件开发工程师 算法题 含答案.docx_第5页
第5页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

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

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

2、n);FiIeManagerb=newFi1eManager(b.txtnewchar,n/);FiIeWriterc=newFi1eWriter(c.txt);StringaWord=nu11;StringbWord=nu11;whi1e(aWord=a.nextWord()!=nu11)c.write(aWord+,);bWord=b.nextWord();if(bWord!=nu11)c.write(bWord+n);)whi1e(bWord=b.nextWord()!=nu11)c.write(bWord+,);)c.c1ose();)c1assFi1eManagerStringwor

3、ds=nu11;intpos=0;pub1icFi1eManager(Strigfi1enamezcharseperators)throwsExceptionFi1ef=newFi1e(fi1ename);FiIeReaderreader=newFi1eReader(f);charbuf=newchar(int)f.1ength();intIen=reader.read(buf);Stringresu1ts=newString(bufzOJen);Stringregex=nu11;if(seperators.1ength1)regex=nn+seperators0+nn+seperators1

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

5、iIter实现,即提供了不同的过滤策略。importjava.io.Fi1e;importjava.io.Fi1e1nputStream;importjava.io.Fi1eOutputStream;importjava.io.FiIenameFiIter;importjava.io.IOEception;importjava.io.InputStream;importjava.io.OutputStream;pub1icc1assJad2Javapub1icstaticvoidmain(Stringargs)throwsExceptionFi1esrcDir=newFi1e(,java);i

6、f(!(srcDir.exists()&SrcDirJsDirectoryO)thrownewEXCePtion(目录不存在”);Fi1efi1es=srcDir.1istFi1es(newFi1enameFi1ter()pub1icboo1eanaccept(Fi1edirzStringname)returnname.endsWith(,.java););System.out.print1n(fi1es.1ength);Fi1edestDir=newFi1e(,jadn);if(!destDir.exists()destDir.mkdir();for(Fi1efi1es)FiIeInputS

7、treamfis=newFi1eInputStream(f);StringdestFiIeName=f.getName().rep1aceAII(,.javaSz,.jad);Fi1eoutputStreamfos=newFi1eOutputStream(newFi1e(destDirzdestFi1eName);copy(fiszfos);fis.c1ose();fos.c1ose();privatestaticvoidcopy(InputStreamipszOutputStreamops)throwsExceptionintIen=0;bytebuf=newbyte1024;whi1e(1

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

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

10、rfi1ter)Fi1efi1es=IistFiIesO;/Array1istacceptedFiIes1ist=newArray1ist();Fi1eacceptedFi1es=newFiIeffiIesJength;intpos=0;for(Fi1efi1e:fi1es)boo1eanaccepted=fi1ter.accept(fi1e);if(accepted)/acceptedFi1es1ist.add(fi1e);acceptedFi1espos+=fi1e;Arrays.copyOf(acceptedFi1eszpos);/retur(Fi1e)accpetedFi1es1ist

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

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

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

14、字符的数量,中文字符的数量,和数字字符的数量,假设字符中没有中文字符、英文字符、数字字符之外的其他特殊字符。intengishCount;intChineseCount;intdigitCount;for(inti=O;i=z0,&ch=xa,&ch=A&ch=T)(engishCount+;)e1se(ChineseCount+;)System.out.print1n();5、说明生活中遇到的二叉树,用java实现二叉树这是组合设计模式。我有很多个(假设10万个)数据要保存起来,以后还需要从保存的这些数据中检索是否存在某个数据,(我想说出二叉树的好处,该怎么说呢?那就是说别人的缺点),假如存在数组中,那么,碰巧要找的数字位于99999那个地方,那查找的速度将很慢,因为要从第1个依次往后取,取出来后进行比较。平衡二叉树(构建平衡二叉树需要先排序,我们这里就不作考虑了)可以很好地解决这个问题,但二叉树的遍历(前序,中序,后序)效率要比数组低很多,原理如下图:代码如下:packagecom.huawei.interview;p

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

当前位置:首页 > 应用文档 > 工作总结

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服