经典干货JAVA面试精选之Java算法与编程 | 超详细的代码解析
Posted Java我最强
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了经典干货JAVA面试精选之Java算法与编程 | 超详细的代码解析相关的知识,希望对你有一定的参考价值。
作者 | elysee
编辑 | Sandra
原文 | http://www.cnblogs.com/hnlshzx/p/3496631.html
Ja强最新动态
在面试中,算法题目是必须的,通过算法能够看出一个程序员的编程思维,考察对复杂问题的设计与分析能力,对问题的严谨性都能够体现出来。算法是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。算法常常含有重复的步骤和一些比较或逻辑判断。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。一个算法的好坏,直接影响一个方法调用的性能,进而影响软件的整体性能。
6、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序:
1,张三,28
2,李四,35
3,张三,28
4,王五,35
5,张三,28
6,李四,35
7,赵六,28
8,田七,35
答:程序代码如下(答题要博得用人单位的喜欢,包名用该公司,面试前就提前查好该公司的网址,如果查不到,现场问也是可以的。还要加上实现思路的注释):
![【经典干货】JAVA面试精选之Java算法与编程(二) | 超详细的代码解析](https://image.cha138.com/20210430/6d1d43d19a684d399ab1a74d8dedd278.jpg)
![【经典干货】JAVA面试精选之Java算法与编程(二) | 超详细的代码解析](https://image.cha138.com/20210430/f78c428cb1ec40d4bc398790c26d8d89.jpg)
![【经典干货】JAVA面试精选之Java算法与编程(二) | 超详细的代码解析](https://image.cha138.com/20210430/20f141ff689843c2853c6a343b403137.jpg)
![【经典干货】JAVA面试精选之Java算法与编程(二) | 超详细的代码解析](https://image.cha138.com/20210430/4610cf39cbdb45849ccf5483b711fa7d.jpg)
![【经典干货】JAVA面试精选之Java算法与编程(二) | 超详细的代码解析](https://image.cha138.com/20210430/9c06cc0c887349fbb35272efb2a75084.jpg)
![【经典干货】JAVA面试精选之Java算法与编程(二) | 超详细的代码解析](https://image.cha138.com/20210430/5e9655d625b94768897c2fa7f0d5bf19.jpg)
![【经典干货】JAVA面试精选之Java算法与编程(二) | 超详细的代码解析](https://image.cha138.com/20210430/fb794d8790d64c9a94324a29cca5aca7.jpg)
![【经典干货】JAVA面试精选之Java算法与编程(二) | 超详细的代码解析](https://image.cha138.com/20210430/e46f65211a3d435d92440b42a08074ea.jpg)
7、写一个Singleton出来。
答:第一种:饱汉模式
![【经典干货】JAVA面试精选之Java算法与编程(二) | 超详细的代码解析](https://image.cha138.com/20210430/44e5252ed1294eed86e654eb27351b89.jpg)
第二种:饥汉模式
![【经典干货】JAVA面试精选之Java算法与编程(二) | 超详细的代码解析](https://image.cha138.com/20210430/3718998926054ef4979c34c376dc075f.jpg)
第三种:用枚举
![【经典干货】JAVA面试精选之Java算法与编程(二) | 超详细的代码解析](https://image.cha138.com/20210430/0718c43b13b8499eba8f3abc0e618853.jpg)
第三:更实际的应用(在什么情况用单例)
![【经典干货】JAVA面试精选之Java算法与编程(二) | 超详细的代码解析](https://image.cha138.com/20210430/83f602da408e436eaeff51c9c3190a92.jpg)
第四:
![【经典干货】JAVA面试精选之Java算法与编程(二) | 超详细的代码解析](https://image.cha138.com/20210430/9b4136bd38ac44389814944faf9a9245.jpg)
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
一般Singleton模式通常有几种种形式:
第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。
![【经典干货】JAVA面试精选之Java算法与编程(二) | 超详细的代码解析](https://image.cha138.com/20210430/81579dd8cc0a4aab907ee05c20870c61.jpg)
第二种形式:
![【经典干货】JAVA面试精选之Java算法与编程(二) | 超详细的代码解析](https://image.cha138.com/20210430/8ea3e43688474c0d8f63ace97020cfa4.jpg)
其他形式:
定义一个类,它的构造函数为private的,所有方法为static的。
一般认为第一种形式要更加安全些
8、递归算法题1
一个整数,大于0,不用循环和本地变量,按照n,2n,4n,8n的顺序递增,当值大于5000时,把值按照指定顺序输出来。
例:n=1237
则输出为:
1237,
2474,
4948,
9896,
9896,
4948,
2474,
1237,
提示:写程序时,先致谢按递增方式的代码,写好递增的以后,再增加考虑递减部分。
答:
![【经典干货】JAVA面试精选之Java算法与编程(二) | 超详细的代码解析](https://image.cha138.com/20210430/eb0163e5f6d84cbf8787ba26f093fc94.jpg)
9、递归算法题2
第1个人10,第2个比第1个人大2岁,依次递推,请用递归方式计算出第8个人多大?
答:
![【经典干货】JAVA面试精选之Java算法与编程(二) | 超详细的代码解析](https://image.cha138.com/20210430/f44b7f04f0a14b7283b277482c4e7531.jpg)
10、排序都有哪几种方法?请列举。用JAVA实现一个快速排序。
答:本人只研究过冒泡排序、选择排序和快速排序,下面是快速排序的代码:
![【经典干货】JAVA面试精选之Java算法与编程(二) | 超详细的代码解析](https://image.cha138.com/20210430/1dc9d7e2686641b8aebc5482501769d7.jpg)
![【经典干货】JAVA面试精选之Java算法与编程(二) | 超详细的代码解析](https://image.cha138.com/20210430/e12e6ead40a243a5bd53fa1d3f3baaac.jpg)
11、有数组a[n],用java代码将数组元素顺序颠倒。
答:
![【经典干货】JAVA面试精选之Java算法与编程(二) | 超详细的代码解析](https://image.cha138.com/20210430/77b1ebe26ab5430dab3f0d89220455fb.jpg)
![【经典干货】JAVA面试精选之Java算法与编程(二) | 超详细的代码解析](https://image.cha138.com/20210430/28c55732a7ca407bad68f09050e17a21.jpg)
12.金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出。
答:去零的代码:
![【经典干货】JAVA面试精选之Java算法与编程(二) | 超详细的代码解析](https://image.cha138.com/20210430/8b353dca76df44f6af042c6c7ad4fe35.jpg)
![【经典干货】JAVA面试精选之Java算法与编程(二) | 超详细的代码解析](https://image.cha138.com/20210430/f104f21f90f244f6949f17ad4bd97975.jpg)
Java我最强
关心Java人成长的技术内容社区
快速关注
以上是关于经典干货JAVA面试精选之Java算法与编程 | 超详细的代码解析的主要内容,如果未能解决你的问题,请参考以下文章
字节跳动Java面试题精选——算法与数据结构「跳槽面试必备」
Java面试逐个突破:OOP(面向对象编程)精选面试108题(附答案)