Java常见的一些经典面试题(附答案解析)

前言:我想每个程序员比较头疼的事情都是:工作拧螺丝 , 面试造火箭吧 。 但是又必须经历这个过程 , 尤其是弄不清面试官问的问题 , 如果你准备的不是很充分 , 会导致面试的时候手足无措 。 今天这篇文章是从已工作5年的程序员面试几十次中挑选的面试概率比较大的一些题目 , 都是大家被问到过的(就是这么自信) , 希望这篇文章能够对大家找工作有所帮助 。
Java常见的一些经典面试题(附答案解析)文章插图
基础部分一丶抽象类和接口的区别1.语法区别(1)抽象类可以有构造方法 , 接口不能有构造方法;(2)抽象类中可以有普通成员变量 , 接口中没有普通成员变量;(3)抽象类中可以有非抽象的方法 , 接口中的方法都必须是抽象的;(4)抽象类中的方法可以是public , protected类型 , 接口中的方法只能是public类型的 , 切默认为public abstract类型;(5)抽象类中可以有静态方法 , 接口中不能有静态方法;(6)抽象类中的静态变量访问类型可以是任意的 , 但接口中的静态变量只能是public static final 类型 。 (7).一个类可以实现多个接口 , 但一个类只能继承一个抽象类;
2.应用区别接口更多是在系统架构方面发挥作用 , 主要用于定义模块之间的通信契约;而抽象类在代码方法 发挥作用 , 可以使用代码块的重用;
二丶Java中接口可不可以继承一般类 , 为什么?不可以因为接口中只能出现3种成员1.公共的静态常量(public static final )2.公共的抽象方法(public abstract )3.静态内部类(static class)而一个类中,就算什么都不写,也必须带一个构造方法,在extends时就会被子类继承,如果是接口也会 继承这个构造方法,很明显构造方法不在上面三项之列而如果类中有一般的方法和成员变量,也会被子类全部继承,这些更不能出现在接口中了,所以接口是绝 对不可能继承一个类的
三、基本数据类型的默认值?基本数据类型所占的字节1. 默认值(1)byte、short、int、long的默认值为0(2)float、double默认值为0.0(3)char默认值为空(4)boolean默认值为false2.所占字节(1)byte 1个字节(2)short 2个字节(3)char 2个字节(4)int 4个字节(5)long 8个字节(6)float 4个字节(7)double 8个字节
四丶String属于哪个类 , 以及常用的方法1.java.lang.string2.substring() , indexOf() , concat() , endswith() , length() , replace()
五丶熟悉的网络协议1.TCP/IP协议是一种面向连接的、可靠的协议 。
TCP/IP协议中的四层分别是应用层、传输层、网络层和链路层 , 每层分别负责不同的通信功能 , 接下来针对这四层进行详细地讲解 。
链路层:用于定义物理传输通道 , 通常是对某些网络连接设备的驱动协议 , 例如针对光纤、网线提供的驱动 。
网络层:网络层是整个TCP/IP协议的核心 , 它主要用于将传输的数据进行分组 , 将分组数据发送到目标计算机或者网络 。
传输层:主要使网络程序进行通信 , 在进行网络通信时 , 可以采用TCP协议 , 也可以采用UDP协议 。
应用层:主要负责应用程序的协议 , 例如HTTP协议、FTP协议等 。 2.FTP 文件传输协议 , 允许在网络上传输文件 。
六、String、StringBuffer、StringBuilder
String的值是不可改变的 , 这就导致每次对String的操作都会生成新的String对象 , 不仅效率底下 ,而且浪费大量的内存空间;StringBuilder是可变类 , 任何对它指向的字符串的操作都不会产生新的对 象 , 但单线程不安全;StringBuffer底层方法使用了synchronized关键字 , 线程比较安全 , 但效率 较StringBuilder慢;
七、设计模式单例模式:某个类只能有一个实例 , 提供一个全局的访问点;工厂模式:定义一个创建对象的接口 , 让子类决定实例化那个类;代理模式:为其他对象提供一个代理以便控制这个对象的访问;


推荐阅读