关于泛型和注释有什么好的java面试问题和答案?关于泛型和注释有什么好的java面试问题和答案?
回答
泛型:向设计,看看他们是否明白type erasure的问题。
注释:问他们自己喜欢的注释是什么,以及它是如何工作(你并不需要一个详细的技术解释,但你正在寻找的东西比“魔术”更多)。
一个很好的类型删除问题是哪些签名是不可能由于类型删除(例如,x(列表
注解:有什么风险? (编译器可能陷入无限循环并阻塞构建过程)。
泛型:如何建立使用泛型一个mixin? (编写一个接受参数的泛型类,然后使用子类作为参数进行扩展)。
另外,+1型擦除。
有关“编译器可能陷入无限循环”的引用作为风险注释。我认为自我参照注释明显地被阻止。 – Nate 2010-05-21 16:59:24
@Nate - 我也很好奇,看看会发生什么。 – 2010-05-21 19:17:14
以下两种方式之一: 1.注释处理代码无缘无故 - 例如,设想一个计算factorial的注释并获取@Fact(-1)。 2.生成代码的注释处理代码,为新一轮编译标记新代码,新代码还包含注释......我不记得确切的标志。 – 2010-05-22 18:09:08
这里有几个仿制药:
1)
问题:如果我有这种方法,我将如何创建T
类型的新实例并将其分配给一个变量叫这个方法里面的item
(假设Class<T>
有一个默认的构造函数)?
public static <T> Collection<T> select(Class<T> c, String sqlStatement) {
}
答:
T item = c.newInstance();
2)
问题:如果你想表明通用扩展一些基本的类,但你不知道是什么扩展基类的类会一直运行到运行时,你怎么能声明泛型?
答:使用通配符:<? extends SomeBaseClass>
问:你怎么能确定一个通用的在运行时使用什么类型的对象?
答:这是不可能确定,因为类型擦除的类型。
不完全如此。好的旧的超类型令牌只能被执行,因为有些类型的信息被遗漏。这个不错的规则还有一个例外,但我遗憾地忘了它。 – 2010-05-21 15:37:01
那么,运行时对象的类型是通过调用'object.getClass()'获得的,而不管使用什么东西,所以你可能需要一个更仔细的措词问题。 – 2010-05-21 16:07:07
如果你正在寻找一个摇滚明星的Java程序员,你可以创建一个从Generics chapter in Bloch's Effective Java不少先进的问题。像同质或异形容器(从Java教程之一的鸟笼和狮子笼示例),擦除等东西。
在较不高级的人我主要寻找理解为什么会想要泛型令人惊讶的是,有多少人不理解这一点,并相信Java 2的做事方式仍然如此)以及类似的事情。
在注解,我喜欢问的是“覆盖”注释和它的好处。我还喜欢深入讨论注释的优缺点,以及何时适合使用它们 - 我不喜欢过度的元编程。这也是一个很好的机会,看看有人使用Hibernate或JUnit进行注释。
有效的Java是必不可少的一本书。将看看这一章。 – 2010-05-21 15:36:00
Class Enum<E extends Enum<E>>
确保什么?- 是
<T> List<? extends T> x()
有用的签名? - 注释保留策略及其原因?
- 假设你想在不同的上下文中重用一个类,你会使用注释还是外部配置? (即注释引入依赖关系)。
哈尔德:
- 有效的泛型类型不能与Java类型系统中表达,并会导致编译器警告的例子。
- java编译器将会/不会引用泛型类型的例子吗? (编译器将输入错误类型的代码示例)
- 什么泛型类型信息没有被擦除,可以从字节码中检索? (Super type tokes是一个应用程序)
- 什么是APT(不使用反射时的用例)?
托马斯,请您详细说明(或提供链接)未删除的通用类型信息(第3项难题)?这是非常有趣的... – Oak 2010-05-21 15:57:39
@Oak - 增加了它。 – 2010-05-21 16:13:22
这里有几个我只是做了:
- [守口如瓶仿制药]请问在取消这些行会导致问题?哪些,如果有的话?为什么或者为什么不?
public class Cage<T> { ... }
public class Animal { ... }
public class Bear extends Animal { ... }
// Cage<Animal> c = new Cage<Bear>();
// Cage<Bear> c = new Cage<Animal>();
// Cage<?> c = new Cage<Animal>();
// Cage<Animal> c = new Cage<?>();
- [约束]只有Animals
应该进入Cages
。我们如何收紧上面的类定义,以便它们反映这个新的要求?你不能实例化一个泛型类型的数组。因此,类似new List<Animal>[10]
是非法的。你能想到一个场景,如果这个是合法的,你会遇到麻烦吗?
答案作为练习留给读者 - 如果你自己不明白,你就不会学习任何东西!但这里有一些提示。
- [Cagey仿制药]:
?
是什么意思?你还记得术语“协变”吗? - [约束条件]:Java允许您限制类型参数的值。你还记得这个的语法吗?
- [法律纠纷]:假设你可以做
Object[] arr = new List<String>[]
。你能写一些代码,把arr
的Lists
不应该在那里?
“注释擅长什么类型的东西?”和“注释不好的是什么类型的东西?”想到了。
注解擅长元编程,但作为一种可能的最佳实践,使用和的代码在注释中应该仍然有效,如果将所有这些注释掉。或者不可以。
否。您的里程可能会有所不同,但您可能希望所有高级开发人员都能就此达成一致。
由于Java 5出来的时候,我看到几十人不明白为什么,给定一个接口I
和类A
和B extends A
你不能将其中需要I<A>
的I<B>
。很多人认为它是反直觉的。
要测试一个人的能力,以原因约泛型的话,我会先问他们是否是可能如上所述的I<B>
分配给I<A>
参考。如果不是,为什么不呢?如果他们弄错了,告诉他们,他们错了,并要求他们尝试填补空白,这里要说明为什么这个例子是类型非安全的,如果它可以编译:
//...
List<String> list = new LinkedList<String>();
someMethod(list);
//blank 1
}
public void someMethod(List<Object> list) {
//blank 2
}
在这一点上应该很容易,如果他们不能构建这样一个例子,我会有点担心。一个例子是
//blank 1
String item = list.get(0);
//blank 2
list.add(Integer.valueOf(5));
现在我明白了,谢谢 – 2016-01-21 17:48:06
- 通用:
问:什么是一个HashMap和Hashtable的区别? A:散列表是同步的,散列表不是。
- 注解:
问:描述序列化Java对象与javax.xml.bind.Marshaller接口和说明。
答:描述是这样的一个有意义的情境应该是可以接受的:
@XmlRootElement
class Employee {
...
}
我认为您会将泛型与Java Collections库混淆。 – 2010-05-21 15:56:41
这个测试:
http://tests4geeks.com/test/java
包含注释的一些问题。
它不包含任何关于泛型的问题。但是,而不是它,还有一些其他有趣的主题,如:
多线程,
内存,
算法与数据结构,
OOP,
等
- 1. 关于泛型和继承的问题
- 2. 关于java泛型的问题
- 3. 有没有一个好的问题和答案WordPress的插件?
- 4. 关于泛型的问题
- 5. 什么有关涉及继承Java泛型和泛型的用处延伸自
- 6. 为什么C#和VB有泛型?他们提供什么好处?泛型,FTW
- 7. Java的泛型和注释:类型安全
- 8. 泛型和Java中的问题
- 9. 关于Java集合和泛型:
- 10. 什么是SSRS和商业智能的好面试问题?
- 11. 关于Java泛型
- 12. Java泛型和继承问题
- 13. 这个泛型类有什么问题?
- 14. 证书和问题的正确答案
- 15. DLL和注册表有什么问题?
- 16. 关于泛型,继承和链接的棘手问题
- 17. 关于void *和泛型函数的问题
- 18. 关于@Override注释的问题
- 19. NLP新手,关于注释的问题
- 20. 关于Java WindowListener的问答
- 21. 为静态类型检查注释javascript有什么好的解决方案?
- 22. Java泛型:关于类型捕获和使用泛型方法生成推理的问题
- 23. Java泛型问题
- 24. Java泛型问题
- 25. Java泛型问题
- 26. Java泛型问题
- 27. Java泛型问题
- 28. 泛型类型和泛型类型定义有什么区别?
- 29. 泛型和接口问题
- 30. 版本1.3不支持java泛型和注释(travis集成)
投票问题应该标注为社区维基。 – danben 2010-05-21 15:21:53
你在寻找什么样的开发人员?主角,还是主管和中层? – 2010-05-21 15:33:10
这个问题似乎是离题,因为它是关于面试问题 – 2014-05-31 19:07:28