java面试题 java面试题2018最佳答案 java面试注意事项
|JAVA是什么?
JAVA是一种程序环境,也是一种编程语言,很多程序员学习的都是C或者C++,但是特殊行业以及很多机械行业,包括笔者的服务器租用托管,IPMI都用的是JAVA环境,你想使用他们的东西,必须本地电脑安装JAVA才可以运行,那么JAVA这个行业前景怎么样?
当然JAVA没有前几年那么红火,因为在2010年之前,很多人使用的塞班手机还有普通手机,运行的软件环境都是JAVA,现在很多手机都用安卓手机以及苹果手机,没有了之前的JAVA,但是这个行业目前在很多行业都涉及,学习的人没有普通软件行业那么多人学习,当然就业岗位以及福利津贴都是不错的。很适合去面试。
那么笔者下面来谈谈java面试需要注意的事项。
1:首先是仪态仪表要好,还有要礼貌,第一印象大家都知道,这个非常重要,这个成功了,最少成功了一半,如果你这个人平时不善于收拾,那么去面试肯定要精心收拾下,哪怕你入职后邋遢点,但是面试必须打扮的好好的。
2:面试不要摆架子,不能因为你之前比较厉害,而不谦虚,在面试的时候最大的忌讳就是装B,如果你很厉害,也装装作很谦虚的样子和面试官乃至,测试你技术的主管聊天,毕竟这些人都是和你一起工作,他们不会喜欢一个平时很喜欢耀武扬威的人一起工作。
3:在对待问题的时候,要诚恳,特别在设计行业,前段时间才发生了,程序员和开发经理打架,是因为程序员和开发经理的想法不一致。毕竟你开发的程序是给普通老百姓使用,而不是自己使用,所以面试的时候最好给2分结论,一份自己的看法,一份普通人看法。
下面我们在来分享2018java面试题。
(1)对于字符串变量以及基本数据类型的包装类型来说:“==”比较两变量的引用是否相等,即变量在内存的首地址是否相等。“equals”比较实体(内存空间)的内容是否相等,因为String类中重新定义了equals方法,并且是用来比较其值得而不是内存地址。注意:如果 StringBuffer s1=new StringBuffer(“a”); StringBuffer s2=new StringBuffer(“a”); s1.equals(s2);为false,因为StringBuffer类中没有重新定义的equals方法,因此equals方法来自于Object类,而Object类的equals方法是用来比较地址的,所以为false。
(2)对于非字符串变量来说:“==”和“equals”的作用是相同的,都是用来比较对象在堆内存中的首地址,即用来比较两个引用变量是否指向同一个实体(内存空间)。注意:(
1)如果是基本数据类型比较只能用“==”不能用“equals”。
(2)对于基本数据类型的包装类型“==”比较的是实体的引用,“equals”比较的是实体的内容。
3)是否可以继承String类? String类是final类故不可以继承。
4)构造器Constructor是否可被override? 构造器Constructor不能被继承,因此不能被override(重写),但可以被overload(重载)。
5)HashMap和Hashtable的区别。
1.HashMap是Hashtable的轻量级实现,效率更高。
2.Hashtable是线程安全的,HashMap是非线程安全的,即前者中的方法有用synchronized修饰,后者没有。
3.HashMap允许空(null)键值(key),而Hashtable不允许。
4.Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
5.HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
6)GC是什么? 为什么要有GC? GC是垃圾收集的意思(Garbage Collection),(内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃)Java提供的GC功能可以 自动监测对象是否超过作用域从而达到自动回收内存的目的,避免内存溢出造成的一系列问题。Java语言没有提供释放已分配内存的显示操作方法。
7)同步和异步有何异同,在什么情况下分别使用他们?举例说明。
(1)同步(synchronized)和异步(asynchronized)是对于多线程(multi-threading)而言的 同步可防止并发 主要出于数据安全的考虑。对于线程中的共享数据,必须进行同步存取。
(2)异步允许并发。当应用程序
在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程。
8)String s = new String ("xyz"); 创建了几个String Object ? 两个,堆区中一个,常量池中一个。 String a="xyz"; 首先会到常量池中去查找,如果存在就不再分配,如果不存在就分配,常量池中的数据 是在编译期赋值的,也就是生成class文件时就把它放到常量池里了。
9)简述synchronized和java.util.concurrent.locks.Lock的异同 ? 主要相同点:Lock能完成synchronized所实现的所有功能 主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放。
10)多线程有几种实现方法,都是什么? 同步有几种实现方法,都是什么? 多线程有两种实现方法,分别是继承Thread类与实现Runnable接口。 实现同步也有两种,分别为使用同步方法和使用同步块。同步方法就是在方法返回类型后面加上synchronized,如:public void synchronized add{},同步块就是直接写:synchronized(需要同步的对象){}
11)switch是否能作用在byte上? 是否能作用在long上? 是否能作用在String上? switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long, String 都不能作用于swtich。
1. String类为什么是final的。
2. HashMap的源码,实现原理,底层结构。
3. 说说你知道的几个Java集合类:list、set、queue、map实现类咯。。。
4. 描述一下ArrayList和LinkedList各自实现和区别
5. Java中的队列都有哪些,有什么区别。
6. 反射中,Class.forName和classloader的区别
7. Java7、Java8的新特性(baidu问的,好BT)
8. Java数组和链表两种结构的操作效率,在哪些情况下(从开头开始,从结尾开始,从中间开始),哪些操作(插入,查找,删除)的效率高
9. Java内存泄露的问题调查定位:jmap,jstack的使用等等
10. string、stringbuilder、stringbuffer区别
11. hashtable和hashmap的区别
13 .异常的结构,运行时异常和非运行时异常,各举个例子
14. String a= “abc” String b = “abc” String c = new String(“abc”) String d = “ab” + “c” .他们之间用 == 比较的结果
15. String 类的常用方法
16. Java 的引用类型有哪几种
17. 抽象类和接口的区别
18. java的基础类型和字节大小。
19. Hashtable,HashMap,ConcurrentHashMap 底层实现原理与线程安全问题(建议熟悉 jdk 源码,才能从容应答)
20. 如果不让你用Java Jdk提供的工具,你自己实现一个Map,你怎么做。说了好久,说了HashMap源代码,如果我做,就会借鉴HashMap的原理,说了一通HashMap实现
21. Hash冲突怎么办?哪些解决散列冲突的方法?
22. HashMap冲突很厉害,最差性能,你会怎么解决?从O(n)提升到log(n)咯,用二叉排序树的思路说了一通
23. rehash
0 Comments.