我要投稿 投诉建议

Java软件开发工程师实习求职常见面试题

时间:2021-01-31 17:57:43 面试试题 我要投稿

Java软件开发工程师实习求职常见面试题

  1、请说出作用域public,private,protected,以及不写时的区别

Java软件开发工程师实习求职常见面试题

  这四个作用域的可见范围如下表所示。

  说明:如果在修饰的元素上面没有写任何访问修饰符,则表示friendly。

  作用域 当前类 同一package 子孙类 其他package

  public √ √ √ √

  protected √ √ √ ×

  friendly √ √ × ×

  private √ × × ×

  备注:只要记住了有4种访问权限,4个访问范围,然后将全选和范围在水平和垂直方向上分别按排从小到大或从大到小的顺序排列,就很容易画出上面的图了。

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

  重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。

  重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。

  如果两个方法的参数列表完全一样,是否可以让它们的返回值不同来实现重载Overload。java就无法确定编程者倒底是想调用哪个方法了,因为它无法通过返回结果类型来判断。

  3.HashMap和Hashtable的区别

  (1 )HashMap不是线程安全的 .

  hashmap是一个接口 是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。

  (2) HashTable是线程安全的一个Collection。

  HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。

  HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。

  HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。

  Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。

  最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。

  Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

  4. ArrayList和LinkedList

  List 接口对Collection进行了简单的扩充,它的具体实现类常用的有ArrayList和LinkedList。你可以将任何东西放到一个List容器中,并在需要时从中取出。ArrayList从其命名中可以看出它是一种类似数组的形式进行存储,因此它的随机访问速度极快,而LinkedList的内部实现是链表,它适合于在链表中间需要频繁进行插入和删除操作。在具体应用时可以根据需要自由选择。前面说的Iterator只能对容器进行向前遍历,而 ListIterator则继承了Iterator的思想,并提供了对List进行双向遍历的方法。

  5..hashCode方法的作用?

  (网友提供的一段,待改进:hashcode这个方法是用来鉴定2个对象是否相等的。

  那你会说,不是还有equals这个方法吗?

  不错,这2个方法都是用来判断2个对象是否相等的。但是他们是有区别的。

  一般来讲,equals这个方法是给用户调用的,如果你想判断2个对象是否相等,你可以重写equals方法,然后在代码中调用,就可以判断他们是否相等了。简单来讲,equals方法主要是用来判断从表面上看或者从内容上看,2个对象是不是相等。举个例子,有个学生类,属性只有姓名和性别,那么我们可以认为只要姓名和性别相等,那么就说这2个对象是相等的。

  hashcode方法一般用户不会去调用,比如在hashmap中,由于key是不可以重复的,他在判断key是不是重复的时候就判断了hashcode这个方法,而且也用到了equals方法。这里不可以重复是说equals和hashcode只要有一个不等就可以了!所以简单来讲,hashcode相当于是一个对象的编码,就好像文件中的md5,他和equals不同就在于他返回的是int型的,比较起来不直观。我们一般在覆盖equals的同时也要覆盖hashcode,让他们的逻辑一致。举个例子,还是刚刚的.例子,如果姓名和性别相等就算2个对象相等的话,那么hashcode的方法也要返回姓名的hashcode值加上性别的hashcode值,这样从逻辑上,他们就一致了。

  要从物理上判断2个对象是否相等,用==就可以了。

  6、静态变量和实例变量的区别?

  在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。

  在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用

  7、Integer与int的区别

  int是java提供的8种原始数据类型之一。Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,

  8、Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

  Math类中提供了三个与取整有关的方法:ceil、floor、round,这些方法的作用与它们的英文名称的含义相对应,例如,ceil的英文意义是天花板,该方法就表示向上取整,所以,Math.ceil(11.3)的结果为12,Math.ceil(-11.3)的结果是-11;floor的英文意义是地板,该方法就表示向下取整,所以,Math.floor(11.6)的结果为11,Math.floor(-11.6)的结果是-12;最难掌握的是round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。

  9.AOP

  (1).概念介绍:所谓AOP,即Aspect orientied program,就是面向方面(切面)的编程,

  (2).解释什么是方面:贯穿到系统的各个模块中的系统一个功能就是一个方面,

  比如,记录日志,统一异常处理,事务处理,权限检查,这些功能都是软件系统

  的一个面,而不是一点,在各个模块中都要出现。

  (3).什么是面向方面编程:把系统的一个方面的功能封装成对象的形式来处理

  (4).怎么进行面向方面编程:把功能模块对应的对象作为切面嵌入到原来的各个系统模块中,采用代理技术,代理会调用目标,同时把切面功能的代码(对象)加入进来,所以,

  用spring配置代理对象时只要要配两个属性,分别表示目标和切面对象(Advisor)。

  10、构造器Constructor是否可被override?

  构造器Constructor不能被继承,因此不能重写Override,但可以被重载Overload。

http://www.cnrencai.com/

【Java软件开发工程师实习求职常见面试题】相关文章:

Java软件开发工程师笔试题06-08

Java软件工程师综合面试题06-05

Java软件测试面试题06-20

java多线程面试题02-19

常见的软件测试工程师面试题06-30

面试指南-百度Java工程师面试题汇总05-15

公司JAVA开发面试题06-03

java前端开发面试题05-09

Java的面试题和答案10-30

软件测试工程师经典常见面试题05-11