100)Java 中,怎样才能打印出数组中的重复元素?(解决方案)-达内培训负责整理
101)Java 中如何将字符串转换为整数?(解决方案)
102)在没有使用临时变量的情况如何交换两个整数变量的值?(解决方案)
关于 OOP 和设计模式的面试题
这部分包含 Java 面试过程中关于 SOLID 的设计原则,OOP 基础,如类,对象,接口,继承,多态,封装,抽象以及更高级的一些概念,如组合、聚合及关联.也包含了 GOF 设计模式的问题.
103)接口是什么?为什么要使用接口而不是直接使用具体类?
接口用于定义 API.它定义了类必须得遵循的规则.同时,它提供了一种抽象,因为客户端只使用接口,这样可以有多重实现,如 List 接口,你可以使用可随机访问的 ArrayList,也可以使用方便插入和删除的 LinkedList.接口中不允许写代码,以此来保证抽象,但是 Java 8 中你可以在接口声明静态的默认方法,这种方法是具体的.
104)Java 中,抽象类与接口之间有什么不同?(答案)
Java 中,抽象类和接口有很多不同之处,但是最重要的一个是 Java 中限制一个类只能继承一个类,但是可以实现多个接口.抽象类可以很好的定义一个家族类的默认行为,而接口能更好的定义类型,有助于后面实现多态机制.关于这个问题的讨论请查看答案.
105)除了单例模式,你在生产环境中还用过什么设计模式?
这需要根据你的经验来回答.一般情况下,你可以说依赖注入,工厂模式,装饰模式或者观察者模式,随意选择你使用过的一种即可.不过你要准备回答接下的基于你选择的模式的问题.
106)你能解释一下里氏替换原则吗?(答案)
107) 什么情况下会违反迪米特法则?为什么会有这个问题?(答案)
迪米特法则建议"只和朋友说话,不要陌生人说话",以此来减少类之间的耦合.
108)适配器模式是什么?什么时候使用?
适配器模式提供对接口的转换.如果你的客户端使用某些接口,但是你有另外一些接口,你就可以写一个适配去来连接这些接口.
109)什么是"依赖注入"和"控制反转"?为什么有人使用?(答案)
110)抽象类是什么?它与接口有什么区别?你为什么要使用过抽象类?(答案)
111)构造器注入和 setter 依赖注入,那种方式更好?(答案)
每种方式都有它的缺点和优点.构造器注入保证所有的注入都被初始化,但是 setter 注入提供更好的灵活性来设置可选依赖.如果使用 XML 来描述依赖,Setter 注入的可读写会更强.经验法则是强制依赖使用构造器注入,可选依赖使用 setter 注入.
112)依赖注入和工程模式之间有什么不同?(答案)
虽然两种模式都是将对象的创建从应用的逻辑中分离,但是依赖注入比工程模式更清晰.通过依赖注入,你的类就是 POJO,它只知道依赖而不关心它们怎么获取.使用工厂模式,你的类需要通过工厂来获取依赖.因此,使用 DI 会比使用工厂模式更容易测试.关于这个话题的更详细讨论请参见答案.
以上就是达内培训给大家做的内容详解,更多关于IT的学习,请继续关注达内培训