1.水仙花数
我们在SE阶段学习的其实并不需要很多的知识储备,更多的是锻炼我们一种编程逻辑,那么第一题.现在我有一个int类型的数值153,我该如何分别取到它个位,十位和百位上的数字呢?我们大致有几种方法可实现呢?分别可以取到哪种类型?
@Test
public void NarcissisticNumber() {
// 分别取个位,十位,百位
int a = 153;
int theUnit = a % 10;
int decade = a / 10 % 10;
int hundredsPlace = a / 10 / 10 % 10;
//1.直接拼接得到String类型
System.out.println(hundredsPlace + "" + decade + "" + theUnit);
// 2.三个百位个位十位相加相乘只有水仙花数可用
int c = theUnit * theUnit * theUnit + decade * decade * decade + hundredsPlace * hundredsPlace * hundredsPlace;
System.out.println(c);
// 通过此方法可得出三个百位,三个十位,三个个位分别相乘得到的三位数有
for (int x = 100; x < 1000; x++) {
int a1 = x % 10;
int a2 = x / 10 % 10;
int a3 = x / 10 / 10 % 10;
if ((a1 * a1 * a1 + a2 * a2 * a2 + a3 * a3 * a3) == x) {
System.out.println("个位是" + a1 + ",十位是" + a2 + ",百位是" + a3 + ",取得数为" + x);
}
}
}
2.学习了编程的逻辑后我们发现有些技术我们会沿用很久或者所很多技术我们都会用到例如线程技术,我们为什么要用他,它的好处是什么? 线程做的事我交给进程不可以吗?:
1)易于调度,提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分。
2)开销少。创建线程比创建进程要快,所需开销很少。。
3)利于充分发挥多处理器的功能。通过创建多线程进程,每个线程在一个处理器上运行,从而实现应用程序的并发性,使每个处理器都得到充分运行。
(线程的基本概念
线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,
线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,
但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。)
(参考https://www.jianshu.com/p/a4fa4edbeb8a)
3.我们在SE阶段学到一些java的关于反射的理念其中我们知道在开发工程中我们会经常的用到反射因为他会帮助我们加载驱动,读取配置文件,其中最经典的应用就是spring框架。第三题那么反射的定义是什么?或者你是怎样理解反射的?
反射就是动态加载对象,并对对象进行剖析。在Java中的反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;
对于任意一个对象,都能够调用它的任意一个方法,这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。
(参考https://www.jianshu.com/p/f4b49e5fa443)
4.在java中通常的流的类型有两种我们称字节流和字符流,而IO普遍也是以字节的形式来传递的,那么第四题解释一下java.io.Serializable(c瑞额莱瑟波)接口(面试常考)
类通过实现 Java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。
也就是说通过这个接口才可以将对象转换为字节序列,同样的也只有实现这个接口才能把字节序列恢复为对象;
(参考如下https://blog.youkuaiyun.com/fmsbily1/article/details/82558325)
5.我们已经知道java有23种设计模式,其中创建型模式(5种)、结构型模式(7种)和行为型模式(11种)那么第五题:其中创建型模式中有单例模式和工厂模式,他们解决什么问题?项目里面怎么用?框架里面使用?
单例模式:解决什么问题:对象的唯一性,性能浪费太多。
项目里面怎么用:数据库连接对象,属性配置文件的读取对象。
模式结构:分为饿汉式和懒汉式(如果考虑性能问题的话,就使用懒汉式,因为懒汉式是在方法里面进行初始化的),构造器私 有化,对外提供方法加同步关键字。
框架里面使用:Struts1的Action。
工厂模式:解决什么问题:对象产生过多,或者经常有子类替换生成。
项目里面怎么用:对于经常生成的对象,或者父子类替换的对象。
模式结构:写一个对外声明的方法,方法里面使用new关键字代替。
框架里面使用:spring的核心就是工厂模式。
(参考如下https://blog.youkuaiyun.com/qq_33326449/article/details/78946364)