企业面试题集绵

上传人:鲁** 文档编号:494025009 上传时间:2023-03-15 格式:DOC 页数:7 大小:242KB
返回 下载 相关 举报
企业面试题集绵_第1页
第1页 / 共7页
企业面试题集绵_第2页
第2页 / 共7页
企业面试题集绵_第3页
第3页 / 共7页
企业面试题集绵_第4页
第4页 / 共7页
企业面试题集绵_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《企业面试题集绵》由会员分享,可在线阅读,更多相关《企业面试题集绵(7页珍藏版)》请在金锄头文库上搜索。

1、(一) Java中有没有goto关键字?(二) 基本数据类型有哪些?String是不是基本数据类型?基本数据类型:byte, char, short, int, long, float, double, booleanString不属于基本数据类型?因为String是一个类(java.lang.String)(三) short s1 = 1; s1 = s1 + 1; 有什么错? short s1 = 1; s1 += 1; 有什么错? 1) 对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编

2、译器将报告需要强制转换类型的错误。2) 对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。(四) char型变量中能不能存贮一个中文汉字?为什么?char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。(五) 自增+和自减- -:i.

3、后+,后- 变量的原值先被使用或输出后,变量的值再自增或自减。 int age = 20;System.out.println(age+);ii. 前+,前- 变量值先自增或自减后,变量的新值再参与运算或输出,其优先级高。int age = 20;System.out.println(-age);(六) &与&的区别。a) &和&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。?b) &还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,&还可以用作位运算

4、符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作。(七) =与equals()方法的区别?a) =对于基本类型比较的是其值是否相同,对于引用类型比较的是对象的地址是否相同。b) equals( )方法比较的是两个对象的内容是否相等,如果两个对象的地址相等那么必定是同一对象其内容也就必定相等;如果两个对象的地址不相等但需要确定内容相等时我们需要重写equal( )方法,在该方法中编写确定对象内容相等的规则代码。(八) 打印各种三角形:参看Triangle.java类(九) 按值传递与按引用传递的区别?(十) 静态与非静的区别1) 变量和方法的分类:a) 变量的分类有两种:i.

5、 静态变量(也叫类变量):变量值被该类的所有对象共享。ii. 非静态变量(也叫实例变量、属性):其值只属于单个对象。b) 方法的分类有两种:i. 静态方法(也叫类方法):此种方法被所有该类的对象共享。ii. 非静态方法(也叫实例方法):此种方法对该类的所有对象都是独立的。2) 要理解static的作用,首先对内存区域有所了解:JVM内存里分四个区域:a) code segment 代码段(存放代码)b) data segment 数据段(存放静态变量、常量)c) Stack 栈(存放局部变量,对象地址)d) Heap 堆(存放new出来的对象或者数组)(十一) 静态初始化块与初化块的不同静态初

6、始化代码块,这里的代码会在类被装载到JVM后马上执行。初始化块,会在对象被创建出来以后执行。创建多个对象时静态初始化代码块只会执行一次。(十二) Java这种面向对象的编程语言有四大特性:a) 抽象:是将现实世界中的事物描述为系统中的类、对象及方法的过程,在这个过程中去除了不相关数据和信息,保留的数据用来实现系统特定功能。b) 封装:是将对象的实现细节隐藏起来(用户无需知道这些细节),通过抽象将对象的属性和方法封装在一个Java类文件中,只提供一些公共的方法将对象的功能展现出来。c) 继承:继承是面向对象实现软件复用的重要手段。描述出事物间具有父子类关系的一种技术,满足“is-a” 是一个的关

7、系;父类的属性和方法可用于子类等优点。利用继承,人们可以基于已存在的类构建一个新类,子类继承已存在的类就是重用父类的方法和属性,除此之外,子类还可以添加一些新的方法和属性来满中新的需求。d) 多态性:多态是指通过父类型的变量引用不同的子类对象(也就是说子类对象可以直接赋值给父类变量),来动态调用在不同子类中实现的方法。Java引用变量有两种类型,分别是编译时类型和运行时类型,编译时类型由声明类型决定,运行时类型由赋值对象的类型决定。如果编译时类型和运行类型不一致,就会出现所谓多态。(十三) 谈谈什么是多态性?a) 可以这样理解:多态是指通过父类型的变量引用不同的子类对象(也就是说父类型变量指向

8、的是一个子类对象,JVM会在运行时动态的绑定父类型变量所指向的子类对象),来调用在不同子类中实现的方法。b) 继承和抽象类、接口都是多态性的实现技术。c) 多态有利于代码的灵活性和扩展性。d) 多态包括方法重写和方法重载。(十四) 什么是抽象类?a) 为什么要抽象类:当父类的某些操作存在不确定性时,就应该将这样的类定义成抽象类。b) 抽象类使用abstract关键声明,有抽象方法的类一定是抽象类;但抽象类不一定就包含有抽象方法,理由是强迫开发人员一定从该类进行继承。c) 抽象类普通的类没有什么大的区别,只是多了抽象方法,抽象类可以有属性,普通方法,静态的东西(属性、方法)。d) 子类应该将父类

9、的抽象方法进行实现,如果子类没有实现抽象方法那么它也是抽象类。e) 注意:抽象不能new 出对象(十五) (重要)谈谈抽象类和接口的区别:a)abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。这弥补了类的多继承问题。 b)在abstract class 中可以有自己的数据成员,也可以有非abstract的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(常量:也就是必须是static final的),所有的成员方法都是abstract的。 c)abstract class和in

10、terface所反映出的设计理念不同。其实abstract class表示的是is-a关系,interface表示的是has-a关系。 注意:当一个行为与一个类的所属行为方法不相关联时,应该采用接口来实现这个行为,不能使用抽象类,否则违反面向对象的ISP(Interface Segregation Principle)规则和OCP(Open Close Principle)原则。d)接口中的方法默认都是 public abstract的。(十六) 使用编码对JVM做垃圾回收有几种方式:a) 调用Object.finalize()b) Runtime. gc():运行垃圾回收器。c) Syste

11、m. gc() :运行垃圾回收器(十七) 使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。例如,对于如下语句: final StringBuffer a=new StringBuffer(immutable);执行如下语句将报告编译期错误:a=new StringBuffer();但是,执行如下语句则可以通过编译: a.append( broken!);有人在定义方法的参数时,可能想采用如下形式来阻止方法内部修改传进来的参数对象:public void method(fi

12、nal StringBuffer param)实际上,这是办不到的,在该方法内部仍然可以增加如下代码来修改参数对象:param.append(a);(十八) 如何实现单例模式:a) 懒汉式b) 饿汉式(比懒汉式更常用一些)(十九) super.getClass()方法调用下面程序的输出结果是多少?importjava.util.Date;publicclassTestextendsDatepublicstaticvoidmain(Stringargs)newTest().test();publicvoidtest()/ java.lang.Class cls = super.getClass(

13、);System.out.println(super.getClass().getName();很奇怪,结果是Test这属于脑筋急转弯的题目,在一个qq群有个网友正好问过这个问题,我觉得挺有趣,就研究了一下,没想到今天还被你面到了,哈哈。在test方法中,直接调用getClass().getName()方法,返回的是Test类名,由于getClass()在Object类中定义成了final,子类不能覆盖该方法,所以,在test方法中调用getClass().getName()方法,其实就是在调用从父类继承的getClass()方法,等效于调用super.getClass().getName()

14、方法,所以,super.getClass().getName()方法返回的也应该是Test。如果想得到父类的名称,应该用如下代码:getClass().getSuperClass().getName();(二十) (面试常见)ArrayList与LinkedList的性能区别:随机获取元素(随便获取指定位置上的元素)插入或删除元素ArrayList好差LinkedList差好(二十一) HashMap与HashTable的区别?(二十二) 怎样实现一个线程?有几种方法?(二十三) 谈谈锁的概念,什么是死锁?(二十四) 什么是同步?(二十五) sleep()方法与wait()方法的区别 (非常重

15、要)a) 线程调用了sleep()方法,当前线程进入睡眠,但不会释放所占用资源对象的锁。在sleep 时间间隔期满后,线程不一定立即恢复执行(其它线程可能没执行完)。i. sleep()是线程的静态方法b) 线程调用了它所占用资源对象的wait()时,使当前线程进入等待队列,同时释放所占用资源对象的锁。直到其他线程调用此资源对象上的 notify() 方法唤醒一个等待线程或notifyAll() 方法唤醒所有等待资源对象的线程。i. wait()是Object对象的方法,不是线程的方法。ii. wait()只能在同步方法或同步代码块中使用。iii. wait()方法和notify()、notifyAll()方法总是配对使用。(二十六) 面试里常问:JDK里用到了哪些设计模式?Singleton Parttern: 单例模式Java.lang.RuntimeJava.util.C

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号