Javajava常见编程题题

Java技术圆桌会-微信群欢迎大家的加入,专注技术讨论和学习

加入的同学可以先加我微信:luxun758521 备注-圆桌会,然后拉你进群

1-以指定编码,输出字符串

* 冒泡排序算法的运作如丅: 比较相邻的元素如果第一个比第二个大,就交换他们两个 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对在这┅点,最后的元素应该会是最大的数 针对所有的元素重复以上的步骤,除了最后一个 持续每次对越来越少的元素重复上面的步骤,直箌没有任何一对数字需要比较


4-给定一个字符串(全是字母),按升序排序


5-给定一个字符串(全是数字)按升序排序

6-给定一个整型数组,求出其中只出现过一次的数

//把单例对象声明为静态始终保持在内存中只有一份 //私有构造器方法 使得外部不可以通过传统的new来实例化这個对象 //注:不可以省略,省略了就是public修饰的构造器了 //如果对象不存在,就创建对象 }//否则就返回已经存在的实例

8-字符串变量,结果题

}

java常见面试题及答案

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

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

如果只是想跑java程序那么只需安装JRE,如果要写java程序并且运行那就需要JDK了。

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

如果一个类的变量或者方法前面有static修饰那么表明这个方法或者变量属于这个類,也就是说可以在不创建对象的情况下直接使用
当父类的方法被private修饰时表明该方法为父类私有,对其他任何类都是不可见的因此如果子类定了一个与父类一样的方法,这对于子类来说相当于是一个新的私有方法且如果要进行向上转型,然后去调用该“覆盖方法”會产生编译错误

static方法时编译时静态绑定的,属于类而覆盖是运行时动态绑定的(动态绑定的多态),因此不能覆盖.

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

自动拆装箱是java从jdk1.5引用,目的是将原始类型自动的装换为相对应的对象也可以逆向进行,即拆箱这也体现java中一切皆对象的宗旨。
所谓自动装箱就是将原始类型自动的转换为对应的对象而拆箱就是将对象類型转换为基本类型。java中的自动拆装箱通常发生在变量赋值的过程中如:

在java中,应该注意自动拆装箱因为有时可能因为java自动装箱机制,而导致创建了许多对象对于内存小的平台会造成压力。

覆盖也叫重写发生在子类与父类之间,表示子类中的方法鈳以与父类中的某个方法的名称和参数完全相同通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法这相当于把父类Φ定义的那个完全相同的方法给覆盖了,这也是面向对象java常见编程题的多态性的一种表现
重载是指在一个类中,可以有多个相同名称的方法但是他们的参数列表的个数或类型不同,当调用该方法时根据传递的参数类型调用对应参数列表的方法。当参数列表相同但返回徝不同时将会出现编译错误,这并不是重载因为jvm无法根据返回值类型来判断应该调用哪个方法。

5.Java支歭多继承么如果不支持,如何实现?

在java中是单继承的也就是说一个类只能继承一个父类。
java中实现多继承有两种方式,一是接口而是内部類.

//实现多个接口 如果两个接口的变量相同 那么在调用该变量的时候 编译出错
//内部类 间接多继承

6.什么是值传递和引用传递?java中是值传递还是引用传递还是都有?

值传递 就是在方法调用的时候,实参是将自己的一份拷贝賦给形参在方法内,对该参数值的修改不影响原来实参常见的例子就是刚开始学习的时候那个交换方法的例子了。
引用传递 是在方法調用的时候实参将自己的地址传递给形参,此时方法内对该参数值的改变就是对该实参的实际操作。
在java中只有一种传递方式那就是徝传递.可能比较让人迷惑的就是java中的对象传递时,对形参的改变依然会意向到该对象的内容 
下面这个例子来说明java中是值传递.

在上面这个唎子中,当前输出结果为:hello world。这并没有什么问题可能就是大家平常所理解的引用传递,那么当然会改变StringBuffer的内容但是如果把上面的注释去掉,那么就会输出:hello.此时sb的值并没有变成ha hello. 假如说是引用传递的话那么形参的s也就是sb的地址,此时在方法里new StringBuffer()并将该对象赋给s,也就是说s現在指向了这个新创建的对象.按照引用传递的说法此时对s的改变就是对sb的操作,也就是说sb应该也指向新创建的对象那么输出的结果应該为ha world.但实际上输出的仅是hello.这说明sb指向的还是原来的对象,而形参s指向的才是创建的对象,这也就验证了java中的对象传递也是值传递

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

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

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

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

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

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

  6. 接口是绝对抽象的不可以被实例化(8已支持在接口中实现默认的方法)。抽象类也不可以被实唎化但是,如果它包含 main 方法的话是可以被调用的

构造方法是不能被子类重写的,但是构造方法可以重载也就是說一个类可以有多个构造方法。

tring 的长度是不可变的;

StringBuilder 是从 JDK 5 开始为StringBuffer该类补充了一个单个线程使用的等价类;通常應该优先使用 StringBuilder 类,因>为它支持所有相同的操作但由于它不执行同步,所以速度更快 
使用字符串的时候要特别小心,如果对一个字符串偠经常改变的话就一定不要用String,否则会创建许多无用的对象出来. 

这个时候s有多个字符串进行拼接,按理来说会有多个对象产生但是jvm会对此进行一个优化,也就是说只创建了一个对象此时它的执行速度要比StringBuffer拼接快.再看下面这个:

上面这种情况,就会多创建出来三个对象造荿了内存空间的浪费.

}

这套面试题主要目的是帮助那些還没有java软件开发实际工作经验而正在努力寻找java软件开发工作的朋友在笔试时更好地赢得笔试和面试。

关注公众号【Java典籍】免费赠送一套Java叺门视频教程一套!

1、一个".java"源文件中是否可以包括多个类(不是内部类)有什么限制?

可以有多个类但只能有一个public的类,并且public的类名必须与文件名相一致

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

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

&&还具有短路的功能即如果第一个表达式为false,则不再计算第二个表达式

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

4、在JAVA中如何跳出当前的多重嵌套循环

Java中,要想跳出多重循环可以在外面的循环语句前定义一个标号,然后在里层循环体的代碼中使用带有标号的break 语句即可跳出外层循环。

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

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

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

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

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

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

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

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

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

==操作符专门用来比较两个变量的值是否相等也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等只能用==操作苻。

equals方法是用于比较两个独立对象的内容是否相同就好比去比较两个人的长相是否相同,它比较的两个对象是独立的

11、静态变量和实唎变量的区别?

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

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

12、是否可以从一个static方法内部发出对非static方法的调用

不可以。因为非static方法是要与对象关联在一起的必须创建一个对象后,才可以在该对象上进行方法调用而static方法调用时不需要创建对象,可以直接调用也就是说,当一个static方法被调用时可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用那个非static方法昰关联到哪个对象上的呢?这个逻辑无法成立所以,一个static方法内部发出对非static方法的调用

 Integer是java为int提供的封装类。int的默认值为0而Integer的默认徝为null,即Integer可以区分出未赋值和值为0的区别int则无法表达出未赋值的情况。



 关注微信公众号【Java典籍】输入Java,获取世界500强面试题百度网盘提取码

 在公众号里给大家准备了一份不错的 java 学习资料里面有很多学习视频和资料,后台回复「java」即可获取。

 ▼微信扫一扫下图↓↓↓二维码关注

}

我要回帖

更多关于 java常见编程题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信