Java工程师面试题及答案

时间:2024-10-25 09:27:55 秀雯 JAVA认证 我要投稿

Java工程师面试题及答案

  在学习和工作的日常里,我们最不陌生的就是试题了,试题可以帮助参考者清楚地认识自己的知识掌握程度。一份什么样的试题才能称之为好试题呢?下面是小编整理的Java工程师面试题及答案,欢迎大家借鉴与参考,希望对大家有所帮助。

Java工程师面试题及答案

  Java工程师面试题及答案 1

  1. 如何判断一个数是2的幂。

  个人认为,数字转化为二进制,符号位为0,余下部分有且只有最左边一位是1,其余位都是0,才是2的幂。原理是 乘二则向左进一位。

  2.陷阱面试题:

  在Java中,Throwable是一个接口还是抽象类?

  3.Javascript 题目

  4. 二进制算法以及思维陷阱题

  现有一千瓶药水,其中九百九十九瓶是完全一样的,只有一瓶里面是毒药,但是外观上分辨不出来。毒药如果给小白鼠喝一点,一星期后这只小白鼠会突然死亡,但之前一点症状也没有。现需要在一星期内找出哪瓶是毒药,问至少需要几只小白鼠?

  5.Java数据范围

  在Java中, 有一个数字,比如100亿,可以使用 int 来存储吗?

  100亿 * 100亿呢,可以用什么类型来存储?

  这样计算, int 类型是32位,4个字节,2的10次方是 1024,大约是1K,2^20 = 1M,约100万, 2^30= 1G,大约是10亿,所以整数只能存大约40亿个数字,正数22E个,所以 100亿可以使用long来存储,但不能使用 int来存储。

  long是64位,因为 32位存放不下100亿,所以64位也存放不下 100亿 * 100亿,只能使用特殊的类型啦,比如K神所说的 BigInteger,或者 BigDecimal来存放。

  一个测试程序:

  6. Java面试题: 如何在一个interface 中执行一些操作

  7.MySQL中UUID做主键如何变得有序呢?

  返回的.结果如下所示:

  8.为什么JSON定义的标准中,属性名需要用引号引起来呢,像下面的name一样?

  应该考虑到各种系统,各种关键字以及标识符的组成不同,而且会有Map等情况

  9.关于JVM

  有个万(wu)能(lai) 的面试技巧,你可以问求职者,这个背后的思想是什么,你理解他的原理吗,为什么要这样实现,如果让你自己写,多长时间做一个基础版本出来?

  GC 有哪几种, 每个JDK版本中有什么区别, 哪几种算法比较好, 适合什么情况, 其回收的思想是什么,怎么实现的,优缺点是什么,你要如何调优。。

  10.面试题: Java 中, 下面的这种用法有什么问题?

  Date nextMonth = new Date(newDate().getTime() + 30*24*60*60*1000);

  当然,这种用法是很不好的,加一个月应该使用的是Calendar 类,Calendar是Java的标准工具类,在 java.util 包下面.

  Date today = new Date();

  Calendar cal = Calendar.getInstance();

  cal.setTime(today);

  cal.add(Calendar.MONTH, 1); // 加一个月

  cal.add(Calendar.DATE, -1); // 减一天

  //

  Date nextM = cal.getTime();

  System.out.println(nextM);

  更坑的在这里:

  long n = 30*24*60*60*1000;

  long nl = 30*24*60*60*1000L;

  System.out.println("n="+n);

  System.out.println("nl="+nl);

  可以参考下面的输出结果:

  n=-1702967296

  nl=2592000000

  提示: int 值可以放下多大的值?

  Java工程师面试题及答案 2

  第一,谈谈final, finally, finalize的区别。

  final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载

  finally?再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。

  finalize?方法名。Java 技术允许使用 finalize 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object类中定义的,因此所有的类都继承了它。子类覆盖 finalize 方法以整理系统资源或者执行其他清理工作。finalize 方法是在垃圾收集器删除对象之前对这个对象调用的。

  第二,HashMap和Hashtable的区别。

  都属于Map接口的类,实现了将惟一键映射到特定的值上。

  HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。

  Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。

  第三,String s = new String("xyz");创建了几个String Object?

  两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。

  第四,sleep 和 wait 有什么区别? 搞线程的最爱

  sleep方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级

  (b)正在运行的线程因为其它原因而阻塞。

  wait是线程交互时,如果线程对一个同步对象x 发出一个wait调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

  第五,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

  short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。

  第六,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

  方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的`方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。

  第七,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals? 它们有何区别?

  Set里的元素是不能重复的,那么用iterator方法来区分重复与否。equals是判读两个Set是否相等。

  equals和==方法决定引用值是否指向同一对象equals在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

  第八,error和exception有什么区别?

  error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。

  exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

  第九,给我一个你最常见到的runtime exception。

  ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException,

  ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException

  第十,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals? 它们有何区别?

  Set里的元素是不能重复的,那么用iterator方法来区分重复与否。equals是判读两个Set是否相等。

  equals和==方法决定引用值是否指向同一对象equals在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

《Java工程师面试题及答案.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

【Java工程师面试题及答案】相关文章:

java面试题2017及答案03-06

Java高级工程师面试题及答案03-24

Java工程师面试题03-29

Java main方法面试题及答案03-14

2017年经典的JAVA面试题及答案03-29

2017年java面试题及答案03-09

高级Java面试题及答案201602-26

NIIT认证Java面试题及答案03-30

2017年最新java面试题及答案03-09

在线咨询

Java工程师面试题及答案

  在学习和工作的日常里,我们最不陌生的就是试题了,试题可以帮助参考者清楚地认识自己的知识掌握程度。一份什么样的试题才能称之为好试题呢?下面是小编整理的Java工程师面试题及答案,欢迎大家借鉴与参考,希望对大家有所帮助。

Java工程师面试题及答案

  Java工程师面试题及答案 1

  1. 如何判断一个数是2的幂。

  个人认为,数字转化为二进制,符号位为0,余下部分有且只有最左边一位是1,其余位都是0,才是2的幂。原理是 乘二则向左进一位。

  2.陷阱面试题:

  在Java中,Throwable是一个接口还是抽象类?

  3.Javascript 题目

  4. 二进制算法以及思维陷阱题

  现有一千瓶药水,其中九百九十九瓶是完全一样的,只有一瓶里面是毒药,但是外观上分辨不出来。毒药如果给小白鼠喝一点,一星期后这只小白鼠会突然死亡,但之前一点症状也没有。现需要在一星期内找出哪瓶是毒药,问至少需要几只小白鼠?

  5.Java数据范围

  在Java中, 有一个数字,比如100亿,可以使用 int 来存储吗?

  100亿 * 100亿呢,可以用什么类型来存储?

  这样计算, int 类型是32位,4个字节,2的10次方是 1024,大约是1K,2^20 = 1M,约100万, 2^30= 1G,大约是10亿,所以整数只能存大约40亿个数字,正数22E个,所以 100亿可以使用long来存储,但不能使用 int来存储。

  long是64位,因为 32位存放不下100亿,所以64位也存放不下 100亿 * 100亿,只能使用特殊的类型啦,比如K神所说的 BigInteger,或者 BigDecimal来存放。

  一个测试程序:

  6. Java面试题: 如何在一个interface 中执行一些操作

  7.MySQL中UUID做主键如何变得有序呢?

  返回的.结果如下所示:

  8.为什么JSON定义的标准中,属性名需要用引号引起来呢,像下面的name一样?

  应该考虑到各种系统,各种关键字以及标识符的组成不同,而且会有Map等情况

  9.关于JVM

  有个万(wu)能(lai) 的面试技巧,你可以问求职者,这个背后的思想是什么,你理解他的原理吗,为什么要这样实现,如果让你自己写,多长时间做一个基础版本出来?

  GC 有哪几种, 每个JDK版本中有什么区别, 哪几种算法比较好, 适合什么情况, 其回收的思想是什么,怎么实现的,优缺点是什么,你要如何调优。。

  10.面试题: Java 中, 下面的这种用法有什么问题?

  Date nextMonth = new Date(newDate().getTime() + 30*24*60*60*1000);

  当然,这种用法是很不好的,加一个月应该使用的是Calendar 类,Calendar是Java的标准工具类,在 java.util 包下面.

  Date today = new Date();

  Calendar cal = Calendar.getInstance();

  cal.setTime(today);

  cal.add(Calendar.MONTH, 1); // 加一个月

  cal.add(Calendar.DATE, -1); // 减一天

  //

  Date nextM = cal.getTime();

  System.out.println(nextM);

  更坑的在这里:

  long n = 30*24*60*60*1000;

  long nl = 30*24*60*60*1000L;

  System.out.println("n="+n);

  System.out.println("nl="+nl);

  可以参考下面的输出结果:

  n=-1702967296

  nl=2592000000

  提示: int 值可以放下多大的值?

  Java工程师面试题及答案 2

  第一,谈谈final, finally, finalize的区别。

  final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载

  finally?再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。

  finalize?方法名。Java 技术允许使用 finalize 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object类中定义的,因此所有的类都继承了它。子类覆盖 finalize 方法以整理系统资源或者执行其他清理工作。finalize 方法是在垃圾收集器删除对象之前对这个对象调用的。

  第二,HashMap和Hashtable的区别。

  都属于Map接口的类,实现了将惟一键映射到特定的值上。

  HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。

  Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。

  第三,String s = new String("xyz");创建了几个String Object?

  两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。

  第四,sleep 和 wait 有什么区别? 搞线程的最爱

  sleep方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级

  (b)正在运行的线程因为其它原因而阻塞。

  wait是线程交互时,如果线程对一个同步对象x 发出一个wait调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

  第五,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

  short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。

  第六,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

  方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的`方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。

  第七,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals? 它们有何区别?

  Set里的元素是不能重复的,那么用iterator方法来区分重复与否。equals是判读两个Set是否相等。

  equals和==方法决定引用值是否指向同一对象equals在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

  第八,error和exception有什么区别?

  error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。

  exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

  第九,给我一个你最常见到的runtime exception。

  ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException,

  ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException

  第十,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals? 它们有何区别?

  Set里的元素是不能重复的,那么用iterator方法来区分重复与否。equals是判读两个Set是否相等。

  equals和==方法决定引用值是否指向同一对象equals在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。