当前位置:首页 > 专题范文 > 公文范文 > 正文

java常见面试题目3篇

发布时间: 2022-12-30 13:35:04 来源:网友投稿

java常见面试题目1  第一,谈谈final,finally,finalize的区别。  final:修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承下面是小编为大家整理的java常见面试题目3篇,供大家参考。

java常见面试题目3篇

java常见面试题目1

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

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

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

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

  第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

  匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。

  第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。

  Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。

  注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象

  第四,&和&&的区别。

  &是位运算符。&&是布尔逻辑运算符。

  第五,HashMap和Hashtable的区别。

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

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

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

  第六,Collection 和 Collections的区别。

  Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。

  Collection是个java.util下的接口,它是各种集合结构的父接口。

  第七,什么时候用assert。

  断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为 false,那么系统会报告一个 AssertionError。它用于调试目的:

  assert(a > 0); // throws an AssertionError if a <= 0

  断言可以有两种形式:

  assert Expression1 ;

  assert Expression1 : Expression2 ;

  Expression1 应该总是产生一个布尔值。

  Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。

  断言在默认情况下是禁用的。要在编译时启用断言,需要使用 source 1.4 标记:

  javac -source 1.4 Test.java

  要在运行时启用断言,可使用 -enableassertions 或者 -ea 标记。

  要在运行时选择禁用断言,可使用 -da 或者 -disableassertions 标记。

  要系统类中启用断言,可使用 -esa 或者 -dsa 标记。还可以在包的基础上启用或者禁用断言。

  可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。

  第八,GC是什么? 为什么要有GC? (基础)。

  GC是垃圾收集器。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:System.gc() Runtime.getRuntime().gc()

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

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

  第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

  Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;

java常见面试题目2

  第一,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正确。

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

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

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

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

  第三,Java有没有goto? Goto?

  java中的保留字,现在没有在java中使用。

  第四,数组有没有length()这个方法? String有没有length()这个方法?

  数组没有length()这个方法,有length的属性。 String有有length()这个方法。

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

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

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

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

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

  第七,给我一个你最常见到的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

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

  error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。 exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

  第九,List, Set, Map是否继承自Collection接口?

  List,Set是 Map不是

  第十,abstract class和interface有什么区别?

  声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。

  接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的`接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。


java常见面试题目3篇扩展阅读


java常见面试题目3篇(扩展1)

——java面试题目3篇

java面试题目1

  1.谈谈对XML的理解?说明Web应用中Web.xml文件的作用?

  解答:XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨*台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。

  web.xml的作用是配置欢迎页,servlet,filter,listener等的。

  2.jsp有哪些内置对象?作用分别是什么?(至少三个)

  解答:

  1)request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header和session数据的有用的方法。

  2)response表示HttpServletResponse对象,并提供了几个用于设置送回 浏览器的响应的方法(如cookies,头信息等)。

  3)out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。

  4)pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。

  5)session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息。

  6)application 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息。

  7)config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。

  8)page表示从该页面产生的一个servlet实例。

  9)exception 针对错误网页,未捕捉的例外

  3.事务是什么?有哪些属性,并简要说明这些属性的含义。

  解答:事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。

  事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。

  事务应该具有4个属性:原子性、一致性、隔离性、持续性。这四个属性通常称为ACID特性。

  原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。

  一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

  隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

  持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

  4、Collection 和 Collections的区别?

  解答:Collection是java.util下的接口,它是各种集合的父接口,继承于它的接口主要有Set 和List;Collections是个java.util下的类,是针对集合的帮助类,提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

  5、HashMap与TreeMap的区别?

  解答:HashMap通过hashcode对其内容进行快速查找,而TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。

  6、ArrayList和Vector的区别?

  解答:同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程不安全的,不是同步的;数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半。

java面试题目2

  1.试述数据库完整保护的主要任务和措施。

  解答:数据库的完整性保护也就是数据库中数据正确性的维护。数据库完整性包括三个内容:实体完整性规则,参照物完整性规则以及用户定义完整性规则。 前两个是有DBMS自动处理。

  实体完整性规则是说针对于基表中的关键字中属性值不能为空值,是数据库完整性的基本要求,主关键字和元组的唯一性对应。

  参照物完整性规则是不允许引用不存在的元组:即基表中的外关键字要么为空,要么关联基表中必存在元组。

  用户定义完整性规则针对具体的数据环境由用户具体设置的规则,它反应了具体应用中的语义要求。 一个完整性规则一般由下面三部分组成:完整性约束条件设置,完整性约束条件的检查以及完整性约束条件的处理.后两部分在数据库中一般有相应的模块处理。另外触发器也可以做完整性的保护,但触发器大量用于主动性领域。

  2.请说明SQLServer中 from tablea & truncate table tablea的区别

  解答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动HWK,使HWK值为0,不需要 rollback segment .而Delete是DML操作需要rollback segment 且花费较长时间.

  3. Oracle安装完成后,如何用命令行启动和关闭数据库?

  解答:

  打开

  STARTUP [FORCE] [RESTRICT] [PFILE= filename] [OPEN [RECOVER][ database] | MOUNT | NOMOUNT] STARTUP OPEN:STARTUP缺省的参数就是OPEN,打开数据库,允许数据库的访问。当前实例的控制文件中所描述的所有文件都已经打开。 STARTUP MOUNT:MOUNT数据库,仅仅给DBA进行管理操作,不允许数据库的用户访问。仅仅只是当前实例的控制文件被打开,数据文件未打开。 STARTUP NOMOUNT:仅仅通过初始化文件,分配出SGA区,启动数据库后台进程,没有打开控制文件和数据文件。不能访问任何数据库。 STARTUP PFILE= filename:以filename为初始化文件启动数据库,不是采用缺省初始化文件。 STARTUP FORCE:中止当前数据库的运行,并开始重新正常的启动数据库。 STARTUP RESTRICT:只允许具有RESTRICTED SESSION权限的用户访问数据库。 STARTUP RECOVER:数据库启动,并开始介质恢复

  关闭

  SHUTDOWN有四个参数:NORMAL、TRANSACTIONAL、IMMEDIATE、ABORT。缺省不带任何参数时表示是NORMAL。

  命令SHUTDOWN NORMAL:不允许新的连接、等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时不需要实例恢复。 SHUTDOWN TRANSACTIONAL:不允许新的连接、不等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时不需要实例恢复。 SHUTDOWN IMMEDIATE:不允许新的连接、不等待会话结束、不等待事务结束、做一个检查点并关闭数据文件。没有结束的事务是自动rollback的。启动时不需要实例恢复。 SHUTDOWN ABORT:不允许新的连接、不等待会话结束、不等待事务结束、不做检查点且没有关闭数据文件。启动时自动进行实例恢复。 另外,对于NORMAL、TRANSACTIONAL、IMMEDIATE,DB Buffer Cache的内容写入了数据文件,没有提交的事务被回滚,所有的资源被释放,数据库被“干净”的关闭。 对于ABORT,DB Buffer Cache的内容没有写入数据文件,没有提交的事务也没有回滚。数据库没有dismount和关闭,数据文件也没有关闭。当数据库启动时,需要通过redo log恢复数据,通过回滚段对事务回滚,对资源进行释放。

  4. 类有哪三个基本特性?各特性的优点?

  解答:类具有封装性、继承性和多态性。

  封装性:类的封装性为类的成员提供公有、缺省、保护和私有等多级访问权限,目的是隐藏类中的私有变量和类中方法的实现细节。

  继承性:类的继承性提供从已存在的类创建新类的机制,继承(inheritance)使一个新类自动拥有被继承类(父类)的全部可继承的成员。

  多态性:类的多态性提供类中方法执行的多样性,多态性有两种表现形式:重载和覆盖。

java面试题目3

  1.IP地址的编码分为哪俩部分?

  IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。

  2.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。

  循环链表,用取余操作做

  3.不能做switch()的参数类型是:

  switch的参数不能为实型。

  4. static有什么用途?(请至少说明两种)

  a.限制变量的作用域

  b.设置变量的存储域

  7. 引用与指针有什么区别?

  a 引用必须被初始化,指针不必。

  b 引用初始化以后不能被改变,指针可以改变所指的对象。

  c 不存在指向空值的引用,但是存在指向空值的指针。

  8. 描述实时系统的基本特性

  在特定时间内完成特定的任务,实时性与可靠性

  9. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别?

  全局变量储存在静态数据库,局部变量在堆栈

  10. 什么是*衡二叉树?

  左右子树都是*衡二叉树 且左右子树的深度差值的绝对值不大于1

  11. 堆栈溢出一般是由什么原因导致的?

  没有回收垃圾资源

  12. 什么函数不能声明为虚函数?

  constructor

  13. 冒泡排序算法的时间复杂度是什么?

  O(n^2)

  14. 写出float x 与“零值”比较的if语句。

  if(x>0.000001&&x<-0.000001)

  16. Internet采用哪种网络协议?该协议的主要层次结构?

  tcp/ip 应用层/传输层/网络层/数据链路层/物理层

  17. Internet物理地址和IP地址转换采用什么协议?

  ARP (Address Resolution Protocol)(地址解析協議)


java常见面试题目3篇(扩展2)

——java常见面试题及答案3篇

java常见面试题及答案1

  1. final关键字可以用来修饰什么?分别起什么作用?

  a) final可以修饰类,这样的类不能被继承。

  b) final可以修饰方法,这样的方法不能被重写。

  c) final可以修饰变量,这样的变量的值不能被修改,是常量。

  2. 简述super关键字作用?

  a) 使用super调用父类的构造方法。

  b) 使用super操作被隐藏的成员变量和方法。

  3. 简述什么是对象上转型?

  假设,A 类是B 类的父类,当我们用子类创建一个对象,并把这个对象的引用放到父类的对象中时,我们称这个父类对象是子类对象的上转型对象。

  4. 上转型对象可以操作什么?不可以操作什么?

  a) 上转对象不能操作子类新增的成员变量,失掉了这部分属性,不能使用子类新增的方法,失掉了一些功能 。

  b) 上转型对象可以操作子类继承或重写的成员变量,也可以使用子类继承的或重写的方法。

  5. 什么是抽象类?什么是抽象方法?有什么特点?

  a) 用关键字abstract修饰类称为抽象类,abstract类不能用new运算创建对象,必须产生其子类,由子类创建对象。

  b) 用关键字abstract修饰方法称为抽象方法,abstract方法,只允许声明,而不允许实现。

  6. 一个类声明实现一个接口,那么这个类需要做什么工作?

  实现接口里所有的方法,并且这些方法的访问权限必须是public。

  7. 简述什么是数组?

  数组是相同类型的数据按顺序组成的一种复合数据类型。通过数组名加数组下标,来使用数组中的数据。下标从 0 开始排序。

  8. 创建数组是否需要指定数组长度,如何求数组长度?

  必须指定数组长度,数组调用 .length来获取数组长度。

  9. char数组和byte数组如何转化成字符串?如何求字符串长度?

  利用String类本身的构造方法,String (char a[]),String (byte a[]),””.length()。以下方法均为字符串中方法

  10. equals equalsIgnoreCase startsWith endsWith

  a) 字符串比较 。

  b) 忽略大小写比较。

  c) 判断是否以指定字符串开头、结尾。

java常见面试题及答案2

  1. regionMatches

  判断一个字符串的子串是否和另一个字符串的子串匹配。

  2. compareTo compareToIgnoreCase indexOf

  a) 按字典顺序比较字符串。

  b) 忽略大小写的按字典顺序比较字符串。

  c) 字符串检索。

  3. substring replace trim()

  a) 字符串截取

  b) 字符串替换

  c) 去掉字符串前后空格。

  4. 字符串如何转化为int型,double型?

  a) Integer.parseInt(“1”);

  b) Double.parseDouble(“25。45”);

  5. 简述StringTokenizer作用?

  按照指定的分隔符,将字符串解析成若干语言符号。

  6. 如何判断一个字符是不是数字,是不是大写?

  a) Character.isDigit(‘a’)

  b) Character.isUpperCase(‘U’)

  7. 已知一个java.util.Date对象,如何格式化成如下格式 YYYY-MM-dd hh:mm:ss

  SimpleDateFormat formate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

  formate.format(new Date()));

  8. 如何生成一个0-100的随即整数?

  (int)(Math.random()*100)

  9. 简述java异常处理的机制?

  当所调用的方法出现异常时,调用者可以捕获异常使之得到处理;也可以回避异常。

  10. 简述如下关键字用途try、catch、throw、throws、finally

  a) try:保护代码,如果try中某行代码出现异常,则try中代码不再继续执行。

  b) catch:捕获异常,当try中出现异常,则catch负责捕获异常,并处理。

  c) throw:抛出异常。

  d) throws:声明异常。

  e) finally:无论try中是否出现异常,finally一定执行。


java常见面试题目3篇(扩展3)

——java常见面试题3篇

java常见面试题1

  1.什么是Java虚拟机?为什么Java被称作是“*台无关的编程语言”?

  Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。

  Java被设计成允许应用程序可以运行在任意的*台,而不需要程序员为每一个*台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件*台的指令长度和其他特性。

  2.JDK和JRE的区别是什么?

  Java运行时环境(JRE)是将要执行Java程序的Java虚拟机。它同时也包含了执行applet需要的浏览器插件。Java开发工具包(JDK)是完整的Java软件开发包,包含了JRE,编译器和其他的工具(比如:JavaDoc,Java调试器),可以让开发者开发、编译、执行Java应用程序。

  3.”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?

  “static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。

  Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。

  4.是否可以在static环境中访问非static变量?

  static变量在Java中是属于类的,它在所有的实例中的值是一样的。当类被Java虚拟机载入的时候,会对static变量进行初始化。如果你的代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。

  5.Java支持的数据类型有哪些?什么是自动拆装箱?

  Java语言支持的8中基本数据类型是:

  byte

  short

  int

  long

  float

  double

  boolean

  char

  自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把int转化成Integer,double转化成double,等等。反之就是自动拆箱。

  6.Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?

  Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。

  7.Java中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?

  当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一个默认的构造函数。

  Java中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。

  Java不支持像C++中那样的复制构造函数,这个不同点是因为如果你不自己写构造函数的情况下,Java不会创建默认的复制构造函数。

  8.Java支持多继承么?

  不支持,Java不支持多继承。每个类都只能继承一个类,但是可以实现多个接口。

  9.接口和抽象类的区别是什么?

  Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:

  接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。

  类可以实现很多个接口,但是只能继承一个抽象类

  类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。

  抽象类可以在不提供接口方法实现的情况下实现接口。

  Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。

  Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,protected或者是public。

  接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含main方法的话是可以被调用的。

  也可以参考JDK8中抽象类和接口的区别

  10.什么是值传递和引用传递?

  对象被值传递,意味着传递了对象的一个副本。因此,就算是改变了对象副本,也不会影响源对象的值。

  对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象所做的改变会反映到所有的对象上。

java常见面试题2

  1.进程和线程的区别是什么?

  进程是执行着的应用程序,而线程是进程内部的一个执行序列。一个进程可以有多个线程。线程又叫做轻量级进程。

  2.创建线程有几种不同的方式?你喜欢哪一种?为什么?

  有三种方式可以用来创建线程:

  继承Thread类

  实现Runnable接口

  应用程序可以使用Executor框架来创建线程池

  实现Runnable接口这种方式更受欢迎,因为这不需要继承Thread类。在应用设计中已经继承了别的对象的情况下,这需要多继承(而Java不支持多继承),只能实现接口。同时,线程池也是非常高效的,很容易实现和使用。

  3.概括的解释下线程的几种可用状态。

  线程在执行过程中,可以处于下面几种状态:

  就绪(Runnable):线程准备运行,不一定立马就能开始执行。

  运行中(Running):进程正在执行线程的代码。

  等待中(Waiting):线程处于阻塞的状态,等待外部的处理结束。

  睡眠中(Sleeping):线程被强制睡眠。

  I/O阻塞(Blocked on I/O):等待I/O操作完成。

  同步阻塞(Blocked on Synchronization):等待获取锁。

  死亡(Dead):线程完成了执行。

  4.同步方法和同步代码块的区别是什么?

  在Java语言中,每一个对象有一把锁。线程可以使用synchronized关键字来获取对象上的锁。synchronized关键字可应用在方法级别(粗粒度锁)或者是代码块级别(细粒度锁)。

  5.在监视器(Monitor)内部,是如何做线程同步的?程序应该做哪种级别的同步?

  监视器和锁在Java虚拟机中是一块使用的。监视器监视一块同步代码块,确保一次只有一个线程执行同步代码块。每一个监视器都和一个对象引用相关联。线程在获取锁之前不允许执行同步代码。

  6.什么是死锁(deadlock)?

  两个进程都在等待对方执行完毕才能继续往下执行的时候就发生了死锁。结果就是两个进程都陷入了无限的等待中。

  7.如何确保N个线程可以访问N个资源同时又不导致死锁?

  使用多线程的时候,一种非常简单的避免死锁的方式就是:指定获取锁的顺序,并强制线程按照指定的顺序获取锁。因此,如果所有的线程都是以同样的顺序加锁和释放锁,就不会出现死锁了。


java常见面试题目3篇(扩展4)

——java基础面试题3篇

java基础面试题1

  1、问题:String和StringTokenizer的区别是什么?

  答案:StringTokenizer是一个用来分割字符串的工具类。

  StringTokenizer st = new StringTokenizer(”Hello World”);

  while (st.hasMoreTokens()) {

  System.out.println(st.nextToken());

  }

  输出:

  Hello

  World

  2、问题:transient变量有什么特点?

  答案:transient变量不会进行序列化。例如一个实现Serializable接口的类在序列化到ObjectStream的时候,transient类型的变量不会被写入流中,同时,反序列化回来的时候,对应变量的值为null。

  3、问题:哪些容器使用Border布局作为它们的默认布局?

  答案:Window, Frame, Dialog。

  4、问题:怎么理解什么是同步?

  答案:同步用来控制共享资源在多个线程间的访问,以保证同一时间内只有一个线程能访问到这个资源。在非同步保护的多线程程序里面,一个线程正在修改一个共享变量的时候,可能有另一个线程也在使用或者更新它的值。同步避免了脏数据的产生。

  对方法进行同步: public synchronized void Method1 () { // Appropriate method-related code. }

  在方法内部对代码块进行同步: public myFunction (){

  synchronized (this) {

  // Synchronized code here. }

  }

java基础面试题2

  1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。

  2、Java有没有goto?

  java中的保留字,现在没有在java中使用。

  3、说说&和&&的区别。

  &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。

  &&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null&& !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。If(x==33 &++y>0) y会增长,If(x==33 && ++y>0)不会增长

  &还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01。

  备注:这道题先说两者的共同点,再说出&&和&的特殊之处,并列举一些经典的例子来表明自己理解透彻深入、实际经验丰富。

  4、在JAVA中如何跳出当前的多重嵌套循环? 在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,即可跳出外层循环。例如,

  ok:

  for(int i=0;i<10;i++) {

  for(int j=0;j<10;j++) {

  System.out.println(“i=” + i + “,j=” + j);

  if(j == 5) break ok;

  }

  }

  另外,我个人通常并不使用标号这种方式,而是让外层的循环条件表达式的结果可以受到里层循环体代码的控制,例如,要在二维数组中查找到某个数字。

  int arr[][] ={{1,2,3},{4,5,6,7},{9}};

  boolean found = false;

  for(int i=0;i

  for(int j=0;j

  System.out.println(“i=” + i + “,j=” + j);

  if(arr[i][j] ==5) {

  found = true;

  break;

  }

  }

  }

  5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上?

  在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long和String类型都不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。

  6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

  对于short s1 = 1; s1 = s1 + 1;由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。

  对于short s1 = 1; s1 += 1;由于 +=是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。

java基础面试题3

  1、char型变量中能不能存贮一个中文汉字?为什么?

  char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。

  备注:后面一部分回答虽然不是在正面回答题目,但是,为了展现自己的学识和表现自己对问题理解的透彻深入,可以回答一些相关的知识,做到知无不言,言无不尽。

  2、用最有效率的方法算出2乘以8等於几?

  2 << 3,

  因为将一个数左移n位,就相当于乘以了2的n次方,那么,一个数乘以8只要将其左移3位即可,而位运算cpu直接支持的,效率最高,所以,2乘以8等於几的最效率的方法是2 << 3。

  3、请设计一个一百亿的计算器

  首先要明白这道题目的考查点是什么,一是大家首先要对计算机原理的底层细节要清楚、要知道加减法的位运算原理和知道计算机中的算术运算会发生越界的情况,二是要具备一定的面向对象的设计思想。

  首先,计算机中用固定数量的几个字节来存储的数值,所以计算机中能够表示的数值是有一定的范围的,为了便于讲解和理解,我们先以byte类型的整数为例,它用1个字节进行存储,表示的最大数值范围为-128到+127。-1在内存中对应的二进制数据为11111111,如果两个-1相加,不考虑Java运算时的类型提升,运算后会产生进位,二进制结果为1,11111110,由于进位后超过了byte类型的存储空间,所以进位部分被舍弃,即最终的结果为11111110,也就是-2,这正好利用溢位的方式实现了负数的运算。-128在内存中对应的二进制数据为10000000,如果两个-128相加,不考虑Java运算时的类型提升,运算后会产生进位,二进制结果为1,00000000,由于进位后超过了byte类型的存储空间,所以进位部分被舍弃,即最终的结果为00000000,也就是0,这样的结果显然不是我们期望的,这说明计算机中的算术运算是会发生越界情况的,两个数值的运算结果不能超过计算机中的该类型的数值范围。由于Java中涉及表达式运算时的类型自动提升,我们无法用byte类型来做演示这种问题和现象的实验,大家可以用下面一个使用整数做实验的例子程序体验一下:

  int a = Integer.MAX_VALUE;

  int b = Integer.MAX_VALUE;

  int sum = a + b;

  System.out.println(“a=”+a+”,b=”+b+”,sum=”+sum);

  先不考虑long类型,由于int的正数范围为2的31次方,表示的最大数值约等于2*1000*1000*1000,也就是20亿的大小,所以,要实现一个一百亿的计算器,我们得自己设计一个类可以用于表示很大的整数,并且提供了与另外一个整数进行加减乘除的功能,大概功能如下:

  ()这个类内部有两个成员变量,一个表示符号,另一个用字节数组表示数值的二进制数 ()有一个构造方法,把一个包含有多位数值的字符串转换到内部的符号和字节数组中 ()提供加减乘除的功能

  public class BigInteger{

  int sign;

  byte[] val;

  public Biginteger(String val) {

  sign = ;

  val = ;

  }

  public BigInteger add(BigInteger other) {

  }

  public BigInteger subtract(BigInteger other) {

  }

  public BigInteger multi*(BigInteger other){

  }

  public BigInteger divide(BigInteger other){

  }

  }

  备注:要想写出这个类的完整代码,是非常复杂的,如果有兴趣的话,可以参看jdk中自带的java.math.BigInteger类的源码。面试的人也知道谁都不可能在短时间内写出这个类的完整代码的,他要的是你是否有这方面的概念和意识,他最重要的还是考查你的能力,所以,你不要因为自己无法写出完整的最终结果就放弃答这道题,你要做的就是你比别人写得多,证明你比别人强,你有这方面的思想意识就可以了,毕竟别人可能连题目的意思都看不懂,什么都没写,你要敢于答这道题,即使只答了一部分,那也与那些什么都不懂的人区别出来,拉开了距离,算是矮子中的高个,机会当然就属于你了。另外,答案中的框架代码也很重要,体现了一些面向对象设计的功底,特别是其中的方法命名很专业,用的英文单词很精准,这也是能力、经验、专业性、英语水*等多个方面的体现,会给人留下很好的印象,在编程能力和其他方面条件差不多的情况下,英语好除了可以使你获得更多机会外,薪水可以高出一千元。

  4、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

  使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。例如,对于如下语句:

  final StringBuffer a=new StringBuffer("immutable");

  执行如下语句将报告编译期错误:

  a=new StringBuffer("");

  但是,执行如下语句则可以通过编译:

  a.append(" broken!");

  有人在定义方法的参数时,可能想采用如下形式来阻止方法内部修改传进来的参数对象: public void method(final StringBuffer param){

  }

  实际上,这是办不到的,在该方法内部仍然可以增加如下代码来修改参数对象: param.append("a");


java常见面试题目3篇(扩展5)

——javaee面试题目3篇

javaee面试题目1

  1、什么是ORM?

  答:对象关系映射(Object-Relational Mapping,简称ORM)是一种为了解决程序的面向对象模型与数据库的关系模型互不匹配问题的技术;简单的说,ORM是通过使用描述对象和数据库之间映射的元数据(在Java中可以用XML或者是注解),将程序中的对象自动持久化到关系数据库中或者将关系数据库表中的行转换成Java对象,其本质上就是将数据从一种形式转换到另外一种形式。

  2、持久层设计要考虑的问题有哪些?你用过的持久层框架有哪些?

  答:所谓"持久"就是将数据保存到可掉电式存储设备中以便今后使用,简单的说,就是将内存中的数据保存到关系型数据库、文件系统、消息队列等提供持久化支持的设备中。持久层就是系统中专注于实现数据持久化的相对独立的层面。 持久层设计的目标包括:

  - 数据存储逻辑的分离,提供抽象化的数据访问接口。

  - 数据访问底层实现的分离,可以在不修改代码的情况下切换底层实现。

  - 资源管理和调度的分离,在数据访问层实现统一的资源调度(如缓存机制)。

  - 数据抽象,提供更面向对象的数据操作。

  持久层框架有:

  - Hibernate

  - MyBatis

  - TopLink

  - Guzz

  - jOOQ

  - Spring Data

  - ActiveJDBC

  3、Hibernate中SessionFactory是线程安全的吗?Session是线程安全的吗(两个线程能够共享同一个Session吗)?

  答:SessionFactory对应Hibernate的一个数据存储的概念,它是线程安全的,可以被多个线程并发访问。SessionFactory一般只会在启动的时候构建。对于应用程序,最好将SessionFactory通过单例模式进行封装以便于访问。

  Session是一个轻量级非线程安全的对象(线程间不能共享session),它表示与数据库进行交互的一个工作单元。Session是由SessionFactory创建的,在任务完成之后它会被关闭。Session是持久层服务对外提供的主要接口。Session会延迟获取数据库连接(也就是在需要的时候才会获取)。为了避免创建太多的session,可以使用ThreadLocal将session和当前线程绑定在一起,这样可以让同一个线程获得的总是同一个session。Hibernate 3中SessionFactory的getCurrentSession()方法就可以做到。

  4、Hibernate中Session的load和get方法的区别是什么?

  答:主要有以下三项区别:

  ① 如果没有找到符合条件的记录,get方法返回null,load方法抛出异常。

  ② get方法直接返回实体类对象,load方法返回实体类对象的代理。

  ③ 在Hibernate 3之前,get方法只在一级缓存中进行数据查找,如果没有找到对应的数据则越过二级缓存,直接发出SQL语句完成数据读取;load方法则可以从二级缓存中获取数据;从Hibernate 3开始,get方法不再是对二级缓存只写不读,它也是可以访问二级缓存的。

  说明:对于load()方法Hibernate认为该数据在数据库中一定存在可以放心的使用代理来实现延迟加载,如果没有数据就抛出异常,而通过get()方法获取的数据可以不存在。

  4、Session的save()、update()、merge()、lock()、saveOrUpdate()和persist()方法分别是做什么的?有什么区别?

  答:Hibernate的对象有三种状态:瞬时态(transient)、持久态(persistent)和游离态(detached)。瞬时态的实例可以通过调用save()、persist()或者saveOrUpdate()方法变成持久态;游离态的实例可以通过调用 update()、saveOrUpdate()、lock()或者replicate()变成持久态。save()和persist()将会引发SQL的INSERT语句,而update()或merge()会引发UPDATE语句。save()和update()的区别在于一个是将瞬时态对象变成持久态,一个是将游离态对象变为持久态。merge()方法可以完成save()和update()方法的功能,它的意图是将新的状态合并到已有的持久化对象上或创建新的持久化对象。

  对于persist()方法,按照官方文档的说明:① persist()方法把一个瞬时态的实例持久化,但是并不保证标识符被立刻填入到持久化实例中,标识符的填入可能被推迟到flush的时间;② persist()方法保证当它在一个事务外部被调用的时候并不触发一个INSERT语句,当需要封装一个长会话流程的时候,persist()方法是很有必要的;③ save()方法不保证第②条,它要返回标识符,所以它会立即执行INSERT语句,不管是在事务内部还是外部。至于lock()方法和update()方法的区别,update()方法是把一个已经更改过的脱管状态的对象变成持久状态;lock()方法是把一个没有更改过的"脱管状态的对象变成持久状态。

javaee面试题目2

  1、阐述Session加载实体对象的过程。

  答:Session加载实体对象的步骤是:

  ① Session在调用数据库查询功能之前,首先会在一级缓存中通过实体类型和主键进行查找,如果一级缓存查找命中且数据状态合法,则直接返回;

  ② 如果一级缓存没有命中,接下来Session会在当前NonExists记录(相当于一个查询黑名单,如果出现重复的无效查询可以迅速做出判断,从而提升性能)中进行查找,如果NonExists中存在同样的查询条件,则返回null;

  ③ 如果一级缓存查询失败则查询二级缓存,如果二级缓存命中则直接返回;

  ④ 如果之前的查询都未命中,则发出SQL语句,如果查询未发现对应记录则将此次查询添加到Session的NonExists中加以记录,并返回null;

  ⑤ 根据映射配置和SQL语句得到ResultSet,并创建对应的实体对象;

  ⑥ 将对象纳入Session(一级缓存)的管理;

  ⑦ 如果有对应的*,则执行*的onLoad方法;

  ⑧ 如果开启并设置了要使用二级缓存,则将数据对象纳入二级缓存; ⑨ 返回数据对象。

  2、Query接口的list方法和iterate方法有什么区别?

  答:

  ① list()方法无法利用一级缓存和二级缓存(对缓存只写不读),它只能在开启查询缓存的前提下使用查询缓存;iterate()方法可以充分利用缓存,如果目标数据只读或者读取频繁,使用iterate()方法可以减少性能开销。

  ② list()方法不会引起N+1查询问题,而iterate()方法可能引起N+1查询问题 说明:关于N+1查询问题,可以参考CSDN上的一篇文章《什么是N+1查询》

  3、Hibernate如何实现分页查询?

  答:通过Hibernate实现分页查询,开发人员只需要提供HQL语句(调用Session的createQuery()方法)或查询条件(调用Session的createCriteria()方法)、设置查询起始行数(调用Query或Criteria接口的setFirstResult()方法)和最大查询行数(调用Query或Criteria接口的setMaxResults()方法),并调用Query或Criteria接口的list()方法,Hibernate会自动生成分页查询的SQL语句。

  4、锁机制有什么用?简述Hibernate的悲观锁和乐观锁机制。

  答:有些业务逻辑在执行过程中要求对数据进行排他性的访问,于是需要通过一些机制保证在此过程中数据被锁住不会被外界修改,这就是所谓的锁机制。

  Hibernate支持悲观锁和乐观锁两种锁机制。悲观锁,顾名思义悲观的认为在数据处理过程中极有可能存在修改数据的并发事务(包括本系统的其他事务或来自外部系统的事务),于是将处理的数据设置为锁定状态。悲观锁必须依赖数据库本身的锁机制才能真正保证数据访问的排他性,关于数据库的锁机制和事务隔离级别在《Java面试题大全(上)》中已经讨论过了。

  乐观锁,顾名思义,对并发事务持乐观态度(认为对数据的并发操作不会经常性的发生),通过更加宽松的锁机制来解决由于悲观锁排他性的数据访问对系统性能造成的严重影响。最常见的乐观锁是通过数据版本标识来实现的,读取数据时获得数据的版本号,更新数据时将此版本号加1,然后和数据库表对应记录的当前版本号进行比较,如果提交的数据版本号大于数据库中此记录的当前版本号则更新数据,否则认为是过期数据无法更新。Hibernate中通过Session的get()和load()方法从数据库中加载对象时可以通过参数指定使用悲观锁;而乐观锁可以通过给实体类加整型的版本字段再通过XML或@Version注解进行配置。

  提示:使用乐观锁会增加了一个版本字段,很明显这需要额外的空间来存储这个版本字段,浪费了空间,但是乐观锁会让系统具有更好的并发性,这是对时间的节省。因此乐观锁也是典型的空间换时间的策略。


java常见面试题目3篇(扩展6)

——java面试题和答案3篇

java面试题和答案1

  1.Java反射机制的作用?

  解答:Java反射机制的作用是:

  1)在运行时判断任意一个对象所属的类。

  2)在运行时构造任意一个类的对象。

  3)在运行时判断任意一个类所具有的成员变量和方法。

  4)在运行时调用任意一个对象的方法

  2.你是怎么理解java的泛型的?

  解答: 在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。

  泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。

  泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。

  3.JAVA源文件中是否可以包括多个类,有什么限制

  解答:一个java源文件中可以包含多个类,每个源文件中至多有一个public类,如果有的话,那么源文件的名字必须与之相同。如果源文件中没有public类,则源文件用什么名字都可以,但最好还是具有特定的意义,免得自己都不记得里面写的是什么了。

  4.请解释分布式事务管理?

  解答:分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。为了实现分布式事务,需要使用下面将介绍的两阶段提交协议。

  阶段一:开始向事务涉及到的全部资源发送提交前信息。此时,事务涉及到的资源还有最后一次机会来异常结束事务。如果任意一个资源决定异常结束事务,则整个事务取消,不会进行资源的更新。否则,事务将正常执行,除非发生灾难性的失败。为了防止会发生灾难性的失败,所有资源的更新都会写入到日志中。这些日志是永久性的,因此,这些日志会幸免遇难并且在失败之后可以重新对所有资源进行更新。

  阶段二:只在阶段一没有异常结束的时候才会发生。此时,所有能被定位和单独控制的资源管理器都将开始执行真正的数据更新。 在分布式事务两阶段提交协议中,有一个主事务管理器负责充当分布式事务协调器的角色。事务协调器负责整个事务并使之与网络中的其他事务管理器协同工作。 为了实现分布式事务,必须使用一种协议在分布式事务的各个参与者之间传递事务上下文信息,IIOP便是这种协议。这就要求不同开发商开发的事务参与者必须支持一种标准协议,才能实现分布式的事务。

java面试题和答案2

  1.请用正则表达式匹配出QQ号(假设QQ号码为5—10位);

  解答: ^ \d{5,10}$

  2. String, StringBuffer StringBuilder的"区别。

  解答:String的长度是不可变的; StringBuffer的长度是可变的,如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法;线程安全;

  StringBuilder是从 JDK 5 开始,为StringBuffer该类补充了一个单个线程使用的等价类;通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。

  3.请写出5种常见到的runtime exception。

  解答:

  NullPointerException:当操作一个空引用时会出现此错误。

  NumberFormatException:数据格式转换出现问题时出现此异常。

  ClassCastException:强制类型转换类型不匹配时出现此异常。

  ArrayIndexOutOfBoundsException:数组下标越界,当使用一个不存在的数组下标时出现此异常。

  ArithmeticException:数*行错误时出现此异常

  4.数组有没有length()这个方法?String有没有length()这个方法?

  解答:数组没有length()方法 它有length属性

  String有length()方法。

  5.请写出一个单例模式。

  解答:单例模式(Singleton pattern):确保一个类只有一个实例,并提供一个全局的访问点public class EagerSingleton { private static final EagerSingleton m_instance = new EagerSingleton(); /** * 私有的默认构造子 */ private EagerSingleton() { } /** * 静态工厂方法 */ public static EagerSingleton getInstance() { return m_instance; } }

  6.在java中,List是个接口,那实现List接口的类有哪些,有什么区别?

  解答: ArrayList是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。


java常见面试题目3篇(扩展7)

——面试题目 (菁选3篇)

面试题目1

  1、你有一个非常好的工作设想,你经过实际调查认为这个设想既科学,又可行,但你的领导和同事们很固执,你采取什么办法说服他们与你合作?

  2、在你朋友当中,有两位朋友由于发生一些矛盾而中断往来,如果需要协调他们之间的关系,你会如何做?

  3、你为什么要报考国家公务员(*)?

  4、谈谈你的个人简历和家庭情况(不能透露自己的姓名)?

  5、以前我们的计划经济讲究公*,而现在的市场经济讲究效率,请你就这两点谈谈你的.看法。

  6、你刚到单位工作,找你的电话很多,你打给别人的电话也很多,有一位老同志看不过眼,批评了你,你会怎么做?

  7、你认为你身边的某人犯了错误你会怎么做?

  8、你认为dy是xx吗?为什么?

  9、谈谈你对本次公*的看法和建议?

  10、工作中你难以和同事、上司相处,你该怎么办?

  11、你觉的工作后,工作的单位与你的理想有很大的距离,谈谈你的想法?

  12、你的工作计划得到了单位局长的批准,而你部门科长且不同你的计划,你给怎么处理?

  13、领导让你下乡做扶贫工作,你该怎么制定计划?

  14、谈谈你对社会~现象的看法?

  15、你所学的知识,工作经验与考的职位之间有什么对应性?

  16、有人拿者介绍信说是灾区来的要你们部门捐款,你怎么办?

  17、谈谈你对“有权不用,过期作废”和“为官一方,造福一方”的看法?

  18、*已经加入wto,谈谈wto对*的经济、政治、文化的影响?

  19、新领导如何对待前任旧领导?

  20、谈谈你对代沟的看法?如果你与领导产生代沟上的问题,你该怎么处理

面试题目2

  1. 你认为你在学校属于好学生吗?

  回答提示:企业的招聘者很精明,问这个问题可以试探出很多问题:如果求职者学习成绩好,就会说:“是的,我的成绩很好,所有的成绩都很优异。当然,判断一个学生是不是好学生有很多标准,在学校期间我认为成绩是重要的,其他方面包括思想道德、实践经验、团队精神、沟通能力也都是很重要的,我在这些方面也做得很好,应该说我是一个全面发展的学生。”如果求职者成绩不尽理想,便会说:“我认为是不是一个好学生的标准是多元化的,我的学习成绩还可以,在其他方面我的表现也很突出,比如我去很多地方实习过,我很喜欢在快节奏和压力下工作,我在学生会组织过 ××活动,锻炼了我的团队合作精神和组织能力。” 有经验的招聘者一听就会明白,企业喜欢诚实的求职者。

  2. 请谈谈如何适应办公室工作的新环境?

  回答提示①办公室里每个人有各自的岗位与职责,不得擅离岗位。

  ②根据领导指示和工作安排,制定工作计划,提前预备,并按计划完成。

  ③多请示并及时汇报,遇到不明白的要虚心请教。

  ④抓间隙时间,多学习,努力提高自己的政治素质和业务水*。

  3. 在工作中学习到了些什么?

  回答提示:这是针对转职者提出的问题,建议此时可以配合面试工作的特点作为主要依据来回答,如业务工作需要与人沟通,便可举出之前工作与人沟通的例子,经历了哪些困难,学习到哪些经验,把握这些要点做陈述,就可以轻易过关了

  4. 有想过创业吗?

  回答提示:这个问题可以显示你的冲劲,但如果你的回答是“有”的话,千万小心,下一个问题可能就是“那么为什么你不这样做呢?”

  5. 最能概括你自己的三个词是什么?

  回答提示:我经常用的三个词是:适应能力强,有责任心和做事有始终,结合具体例子向主考官解释,使他们觉得你具有发展潜力

  6. 你认为你在学校属于好学生吗?

  回答提示:企业的招聘者很精明,问这个问题可以试探出很多问题:如果求职者学习成绩好,就会说:“是的,我的成绩很好,所有的成绩都很优异。当然,判断一个学生是不是好学生有很多标准,在学校期间我认为成绩是重要的,其他方面包括思想道德、实践经验、团队精神、沟通能力也都是很重要的,我在这些方面也做得很好,应该说我是一个全面发展的学生。”如果求职者成绩不尽理想,便会说:“我认为是不是一个好学生的标准是多元化的,我的学习成绩还可以,在其他方面我的表现也很突出,比如我去很多地方实习过,我很喜欢在快节奏和压力下工作,我在学生会组织过 ××活动,锻炼了我的团队合作精神和组织能力。” 有经验的招聘者一听就会明白,企业喜欢诚实的求职者。

  7. 除了本公司外,还应聘了哪些公司?

  回答提示:很奇怪,这是相当多公司会问的问题,其用意是要概略知道应徵者的求职志向,所以这并非绝对是负面答案,就算不便说出公司名称,也应回答“销售同种产品的公司”,如果应聘的其他公司是不同业界,容易让人产生无法信任的感觉。

  8. 何时可以到职?

  回答提示:大多数企业会关心就职时间,最好是回答\’如果被录用的话,到职日可按公司规定上班”,但如果还未辞去上一个工作、上班时间又太近,似乎有些强人所难,因为交接至少要一个月的时间,应进一步说明原因,录取公司应该会通融的

  9. 你并非毕业于名牌院校?

  回答提示:是否毕业于名牌院校不重要,重要的是有能力完成您交给我的工作,我接受了北大青鸟的职业培训,掌握的技能完全可以胜任贵公司现在工作,而且我比一些名牌院校的应届毕业生的动手能力还要强,我想我更适合贵公司这个职位。

  10. 你怎样看待学历和能力?

  回答提示:学历我想只要是大学专科的学历,就表明觉得我具备了根本的学习能力。剩下的,你是学士也好,还是博士也好,对于这一点的讨论,不是看你学了多少知识,而是看你在这个领域上发挥了什么,也就是所说的能力问题。一个人工作能力的高低直接决定其职场命运,而学历的高低只是进入一个企业的敲门砖,如果贵公司把学历卡在博士上,我就无法进入贵公司,当然这不一定只是我个人的损失,如果一个专科生都能完成的工作,您又何必非要招聘一位博士生呢?

面试题目3

  1. 当前对有些单位实施的„末位淘汰制‟,有不同争议,你怎么看待这种用人措施?”

  回答提示: “末位淘汰制”是一种向竞争机制发展的过渡性措施,可以试行;但要因情况而异,不能一刀切。再说“末位淘汰制”也不完全等同于竞争机制。对于规模较大、人数较多的单位最初实行,然后实施竞争机制,未尝不可。如果在规模小、人数少的单位实行,效果就不一定好,因为也确有些单位人数不多,几乎所有人员都很努力,成绩都不错,甚至难分上下,如果实行就会造*心惶惶、人际关系紧张的不利局面。

  2. 物质待遇和工作条件是人们选择工作的重要因素之一,这次报考谈一谈你在选择工作时都考虑哪些因素?为什么?

  回答提示:好:既能够坦率承认在择业过程中的个人利益因素,又能够超越物质利益因素,有正确的择业观,积极向上,叙述有条理,具有说服力。

  中:基本能够正视现实,实事求是地考虑择业问题,叙述问题基本清楚,有一定说理性。

  差:隐瞒自己的真实想法,假、大、空,或者过分注重自己的个性需求,叙述无条理,说理性差。

  3. 直接领导要求你在30日内完成一项工作,你会怎样去完成?

  回答提示:提前做准备,制订完备的计划,会准时甚至更早地完成工作任务。

  4. 你认为这份工作最重要的是什么?

  回答提示:叙述工作特性的同时,也要加上自己的看法,如果是有工作经验的人,最好说明自己的基本心态。

  5. 上班的时候,往往有多件事需要你处理,你会如何安排?

  回答提示:事有三件,紧要处着手。要先处理重要事件,其他依次统筹安排

  6. 找这份工作,你最重要的考虑因素为何?

  回答提示:如回答:“工作的性质是否能让我发挥所长,并不断成长。”因为公司要找工作表现好、能够真正有贡献的人,而非纯粹慕名、求利而来的人。

  7. 在你参加我们这次面试前,你做了哪些准备工作?

  回答提示:公司的背景知识及岗位要求;可能要问的问题(技术+技巧);调整状态、保持一颗*常心等

  8. 你争取成功的动力是什么?

  回答提示:自我实现,展现自身的价值。

  9. 怎样理解团队?请举例并说明启示。

  回答提示:团队成员共同承担领导职能,共同努力,以各自独特的方式,在所处的环境*同完成预先设定的目标。(明确的目标、勇于负责、协作增效、能力资源各异)

  例如:大雁团队,其合作精神体现在以下几个方面:

  (1)大雁会共同“拍动翅膀”。拍翅膀是大雁的本能,但只要排*字队形,就可以提高飞行效率。(2)所有的大雁都愿意接受团体的"飞行队形,而且都实际协助队形的建立。如果有一只大雁落在队形外面,它很快就会感到自己越来越落后,便会立即回到雁群中。(3)大雁的领导工作是由群体共同分担的。虽然有带头雁出来整队,但是当它疲倦时,便会自动退到队伍之中,另一只大雁马上替补领头的位置。(4)队形后边的大雁不断发出鸣叫,目的是为了给前方的伙伴打气激励。(5)如果一只大雁生病或被猎人击伤,雁群中就会有两只大雁脱离队形,靠近这只遇到困难的同伴,协助它降落在地面上,直至它能够重回群体,或是不幸死亡。

  通过分析大雁的合作行为,我们可以得出以下启示:

  (1)每个人都要忠诚于自己的团队,忠诚于自己的事业,做好自己的本职工作。如果你不拍翅膀,他不拍翅膀,这个团体还会存在吗?(2)如果我们与大雁一样聪明的话,我们就会留在与自己的事业目标一致的队伍里,而且乐意接受他人的协助,也愿意协助他人。(3)我们必须确定从背后传来的是鼓励的叫声,而不是其他声音。想要在职业生涯中生存和发展,需要把工作伙伴变成啦啦队,一队快乐的工作伙伴是成功最好的助手。你的工作伙伴散播的有利消息远比你个人所有的努力更有助于你职业生涯的发展

  10. 为什么下水道的井盖是圆的?

  回答提示:圆的井盖立起来时不会掉到井里。


java常见面试题目3篇(扩展8)

——常见软件测试面试题目 (菁选2篇)

常见软件测试面试题目1

  1、软件测试的流程是什么?

  需求调查:全面了解系统概况、应用领域、软件开发周期、软件开发环境、开发组织、时间安排、功能需求、性能需求、质量需求及测试要求等。根据系统概况进行项目所需的人员、时间和工作量估计以及项目报价。

  制定初步的项目计划。

  测试准备:组织测试团队、培训、建立测试和管理环境等。

  测试设计:按照测试要求进行每个测试项的测试设计,包括测试用例的设计和测试脚本的开发等。

  测试实施:按照测试计划实施测试。

  测试评估:根据测试的结果,出具测试评估报告。

  2、你对SQA的职责和工作活动(如软件度量)的理解?

  SQA就是独立于软件开发的项目组,通过对软件开发过程的监控,来保证软件的开发流程按照指定的CMM规程(如果有相应的CMM规程),对于不符合项及时提出建议和改进方案,必要时可以向高层经理汇报以求问题的解决。通过这样的途径来预防缺陷的引入,从而减少后期软件的维护成本。SQA主要的工作活动包括制定SQA工作计划,参与阶段产物的评审,进行过程质量、功能配置及物理配置的审计等;对项目开发过程中产生的数据进行度量等等。

  3、说说你对软件配置管理的理解

  项目在开发过程中要用相应的配置管理工具对配置项(包括各个阶段的产物)进行变更控制,配置管理的使用取决于项目规模和复杂性及风险的水*。软件的规模越大,配置管理就越显得重要。还有在配置管理中,有一个很重要的"概念,那就是基线,是在一定阶段各个配置项的组合,一个基线就提供了一个正式的标准,随后的工作便基于此标准,并只有经过授权后才能变更这个标准。配置管理工具主要有CC,VSS,CVS,SVN等,我只用过SVN,对其他的工具不是很熟悉。

  4、怎样写测试计划和测试用例?

  简单点,测试计划里应有详细的测试策略和测试方法,合理详尽的资源安排等,至于测试用例,那是依赖于需求(包括功能与非功能需求)是否细化到功能点,是否可测试等。

常见软件测试面试题目2

  1、单元测试的测试对象、目的、测试依据、测试方法?

  测试对象是模块内部的程序错误,目的是消除局部模块逻辑和功能上的错误和缺陷。测试依据是模块的详细设计,测试方法是采用白盒测试。

  2、怎样看待加班问题?

  加班的话我没有太多意见,但是我还是觉得如果能够合理安排时间的话,不会有太多时候加班的。

  3、结合你以前的学习和工作经验,你认为如何做好测试?

  根据我以前的工作和学习经验,我认为做好工作首先要有一个良好的沟通,只有沟通无障碍了,才会有好的协作,才会有更好的效率,再一个就是技术一定要过关,做测试要有足够的耐心,和一个良好的工作习惯,不懂的就要问,实时与同事沟通这样的话才能做好测试工作。

  4、你为什么选择软件测试行业?

  因为之前了解软件测试这个行业,觉得他的发展前景很好。

  5、根据你以前的工作或学习经验描述一下软件开发、测试过程,由哪些角色负责,你做什么?

  要有架构师、开发经理、测试经理、程序员、测试员。我在里面主要是负责所分到的模块执行测试用例。

  6、根据你的经验说说你对软件测试/质量保证的理解

  软件质量保证与测试是根据软件开发阶段的规格说明和程序的内部结构而精心设计的一批测试用例(即输入数据和预期的输出结果),并根据这些测试用例去运行程序,以发现错误的过程。它是对应用程序的各个方面进行测试以检查其功能、语言有效性及其外观排布。

最新文章

版权所有:博古范文网 2012-2024 未经授权禁止复制或建立镜像[博古范文网]所有资源完全免费共享

Powered by 博古范文网 © All Rights Reserved.。浙ICP备12018771号-1