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

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

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

1、面试软件开发工程师算法题含答案1.从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序:1张三282,李四,353,张三284,王五355,张三286,李四357,赵六,288,田七,35程序代码如下(答题要博得用人单位的喜欢,包名用该公司,面试前就提前查好该公司的网址,如果查不到,现场问也是可以的。还要加上实现思路的注释):packagecom.huawei.interview;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStream;importjav

2、a.io.InputStreamReader;importjava.Uti1Comparator;importjava.uti1.HashMap;importjava.Uti1Iterator;importjava.uti1.Map;importjava.uti1.TreeSet;pub1icc1assGetNameTest*paramargsVpub1icstaticvoidmain(Stringargs)/InputStreamips=GetNameTest.c1ass.getResourceAsStream(7comhuaweiinterviewinfo.txt);用上一行注释的代码和下

3、一行的代码都可以,因为info.txt与GetNameTeSt类在同一包下面,所以,可以用下面的相对路径形式Mapresu1ts=newHashMapQ;InputStreamips=GetNameTest.c1ass.getResourceAsStream(info.txt);BufferedReaderin=newBufferedReader(newInputStreamReader(ips);String1ine=nu11;try(whi1e(1ine=in.read1ine()!=nu11)(dea11ine(1inezresu1ts);)sortResu1ts(resu1ts);ca

4、tch(IOExceptione)/TODOAuto-generatedcatchb1ocke.printStackTrace();)staticc1assUser(pub1icStringname;pub1icIntegerva1ue;pub1icUser(StringnamezIntegerva1ue)(this.name=name;this.va1ue=va1ue;)Overridepub1icboo1eanequa1s(Objectobj)/TODOAuto-generatedmethodstub下面的代码没有执行,说明往treeset中增加数据时,不会使用到equa1s73)oboo

5、1eanresu1t=super.equa1s(obj);System.out.print1n(resu1t);returnresu1t;)privatestaticvoidsortResu1ts(Mapresu1ts)/TODOAuto-generatedmethodstubTreeSetSortedResuIts=newTreeSet(newComparator()pub1icintcompare(Objecto1zObjecto2)Useruser1=(User)o1;Useruser2=(User)o2;*如果CompareTo返回结果O,则认为两个对象相等,新的对象不会增加到集合中去

6、*所以,不能直接用下面的代码,否则,那些个数相同的其他姓名就打印不出来。*/returnuser1.va1ue-user2.va1ue;/returnuser1.va1ueuser2.va1ue?-1:user1.va1ue=user2.va1ue?0:1;if(user1.va1ueuser2.va1ue)return1;pareTo(user2.name););Iteratoriterator=resu1ts.keySet().iterator();whi1e(iterator.hasNext()(Stringname=(String)iterator.next();Integerva1u

7、e=(Integer)resu1ts.get(name);if(va1ue1)sortedResu1ts.add(newUser(name,va1ue);)PrintResu1ts(SortedResuIts);)privatestaticvoidprintResu1ts(TreeSetSortedResuIts)(Iteratoriterator=sortedResu1ts.iterator();whi1e(iterator.hasNext()(Useruser=(User)iterator.next();System.out.print1n(user.name+user.va1ue);)p

8、ub1icstaticvoiddea11ine(StringIinezMapmap)if(!.equa1s(1ine.trim()Stringresu1ts=1ine.sp1it(n,);if(resu1ts.1ength=3)(Stringname=resu1ts1;Integerva1ue=(Integer)map.get(name);if(va1ue=nu11)va1ue=O;map.put(namezva1ue+1);)2、写一个Sing1eton出来。第一种:饱汉模式pub1icC1assSingIeTonprivateSing1eTon()实例化放在静态代码块里可提高程序的执行效率

9、,但也可能更占用空间privatefina1staticSingIeToninstance=newSing1eTo();pub1icstaticSingIeTonget1nstance()returninstance;)第二种:饥汉模式pub1icC1assSingIeTonprivateSing1eTon()privatestaticinstance=nu11newSing1eTon();pub1icstaticsynchronizedSingIeTongetInstanceOfif(instace=nu11)instance=newSing1eTon();returninstance;)第

10、三种:用枚举pub1icenumSing1eToONE;)第三:更实际的应用(在什么情况用单例)pub1icC1assSequenceGeneratorf下面是该类自身的业务功能代码privateintcount=0;pub1icsynchronizedintgetSequence()+count;下面是把该类变成单例的代码privateSequenceGeneratorOOprivatefina1staticinstance=newSequenceGenerator();pub1icstaticSingIeTonget1nstance()returninstance;)第四:pub1icc1

11、assMemoryDao(privateHashMapmap=newHashMapO;pub1icvoidadd(Studentstu1)map.put(SequenceGenerator.getInstance().getSequence()zstu1);把MemoryDao变成单例)Sing1eton模式主要作用是保证在Java应用程序中,一个类C1ass只有一个实例存在。一般Sing1eton模式通常有几种种形式:第一种形式:定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个pub1ic的get1nstance方法获取

12、对它的引用格嵌而调用其中的方法。pub1icc1assSing1etonprivateSing1eton()在自己内部定义自己一个实例,是不是很奇怪?注意这是private只供内部调用privateStaticSingIetoninstance=newSingIetonQ;这里提供了一个供外部访问本c1ass的静态方法,可以直接访问pub1icStaticSingIetonget1nstance()returninstance;)第二种形式:pub1icc1assSing1etonprivatestaticSing1etoninstance=nu11;pub1icstaticsynchroni

13、zedSing1etonget1nstance()这个方法比上面有所改进,不用每次都进行生成对象,只是第一次使用时生成实例,提高了效率!if(instance=nu11)instance=newSing1eton();returninstance;)其他形式:定义一个类,它的构造函数为private的,所有方法为static的。一般认为第一种形式要更加安全些3 .递归算法题1一个整数,大于O,不用循环和本地变量,按照n,2n,4n,8n的顺序递增,当值大于5000时,把值按照指定顺序输出来。例:n=1237则输出为:1237,2474,4948,9896,9896,4948,2474,1237

14、,提示:写程序时,先致谢按递增方式的代码,写好递增的以后,再增加考虑递减部分。pub1icstaticvoiddoub1eNum(intn)System.outprint1n(n);if(n=5000)doub1eNum(*2);System.outprint1n(n);)Gaibaota(N)=Gaibaota(N-I)+n4 .递归算法题2第1个人10,第2个比第1个人大2岁,依次递推,请用递归方式计算出第8个人多大?packagecn.itcast;importjava.uti1.Date;pub1icc1assA1pub1icstaticvoidmain(Stringargs)System.out.print1n(computeAge(8);)pub1icstaticintcomputeAge(intn)(讦(n=1)return10;returncomputeAge(n-1)+2;)pub1icstaticvoidtoBinary(intnzStringBufferresu1t)(if(n2!=0)toBinary(n2zresu1t);resu1t.

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

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

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

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

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



客服