当前位置: > 财经>正文

Java面试之Java基础篇(offer 拿来吧你) 外汇加保险的模式包括什么和什么两种类型

2023-08-05 15:58:39 互联网 未知 财经

现在关于Java面试的资料是层出不穷,对于选择困难症的同学来说,无疑是陷入了一次次的抉择与不安中,担心错过了关键内容,现在小曾哥秉持着"融百家之所长,汇精辟之文档"的思想,整理一下目前主流的一些八股文,以达到1+1 > 2 的效果!

文章目录 Java特性篇1、Java语言的特点2、 解释下什么是面向对象?面向对象和面向过程的区别?3、面向对象的三大特性?分别解释下?4、什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?5、JDK和JRE的区别是什么?6、为什么Java代码可以实现一次编写、到处运行?7、Java 和 C++ 的区别? Java语法基础篇1、continue、break 和 return 的区别是什么?2、成员变量与局部变量的区别?3、说一说你对Java访问权限的了解?4、重载和重写有什么区别?5、为什么Java只有值传递? 传参机制是什么?6、Java支持的数据类型有哪些?什么是自动拆装箱?7、int和Integer有什么区别,二者在做==运算时会得到什么结果?8、Java中,什么是构造方法?什么是构造方法重载?什么是复制构造方法?9、Java支持多继承么?10、深拷贝和浅拷贝区别了解吗?什么是引用拷贝?11、Object 的常用方法有哪些?12、说一说hashCode()和equals()的关系?13、String、StringBuffer、StringBuilder 的区别?14、说一说你对字符串拼接的理解?15、 接口和抽象类有什么区别?语法区别(构造方法、静态方法、普通成员变量、非抽象的普通方法、访问类型,继承)应用区别(系统架构、代码的重用): 异常篇1、Exception 和 Error 有什么区别?2、运行时异常(RuntimeException)包含哪些?3、try-catch-finally 如何使用?4、异常使用有哪些需要注意的地方? 泛型1、什么是类型擦除?2、项目中哪里用到了泛型? 反射1、什么是反射?2、反射机制的优缺点?3、在实际项目中有哪些应用场景? Java序列化1、实际开发中有哪些用到序列化和反序列化的场景?2、序列化协议对应于 TCP/IP 4 层模型的哪一层? 集合类1、Java中有哪些容器(集合类)?2、ArrayList 与 LinkedList 区别?3、Arraylist 和 Vector 的区别?4、ArrayList的扩容机制5、HashMap 和 HashSet 的区别6、HashMap 和 Hashtable 的区别7、HashMap底层实现原理8、HashMap为什么用红黑树,而不是用B+树、AVL树?红黑树 和 AVL树区别红黑树 和 B+树区别 9、HashMap实现存储和读取?Put方法的执行过程Get方法的执行过程 10、HashMap的扩容机制?11、HashMap 的 size 为什么必须是 2 的整数次方?12、HashTable 和 ConcurrentHashMap 的区别?13、Iterator 怎么使用?有什么特点?14、Iterator 和 Enumeration 接口的区别? IO1、什么是IO?2、Java 中 3 种常见 IO 模型BIO (Blocking I/O)NIO (Non-blocking/New I/O)AIO (Asynchronous I/O) 3、介绍一下Java中的IO流4、Java IO涉及的设计模式有哪些?装饰器模式适配器模式适配器模式和装饰器模式有什么区别呢? 并发编程1、什么是线程和进程?2、创建线程的几种方式?2、并发与并行的区别3、同步和异步的区别4、为什么要使用多线程呢?5、使用多线程可能带来什么问题?6、说说线程的生命周期和状态?7、什么是线程死锁?如何避免死锁?死锁的四个必要条件:如何预防和避免线程死锁? 8、sleep() 方法和 wait() 方法对比9、Java多线程之间的通信方式10、synchronized与Lock的区别11、在 Java 程序中怎么保证多线程的运行安全?12、Java 线程同步的几种方法?13、谈谈对ThreadLocal的理解?ThreadLocal 有什么用?ThreadLocal的实现原理?

Java特性篇 1、Java语言的特点 简单易学;面向对象(封装,继承,多态);平台无关性( Java 虚拟机实现平台无关性);支持多线程( C++语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 Java 语言却提供了多线程支持);可靠性;安全性;支持网络编程并且很方便编译与解释并存; 2、 解释下什么是面向对象?面向对象和面向过程的区别?

面向对象是一种基于面向过程的编程思想,是向现实世界模型的自然延伸,这是一种”万物皆对象”的编程思想。由执行者变为指挥者,在现实生活中的任何物体都可以归为一类事物,而每一个个体都是一类事物的实例。面向对象的编程是以对象为中心,以消息为驱动。 区别: (1)编程思路不同:面向过程以实现功能的函数开发为主,用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了,而面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。 (2)封装性:都具有封装性,但是面向过程是封装的是功能,而面向对象封装的是数据和功能。 (3)面向对象具有继承性和多态性,而面向过程没有继承性和多态性,所以面向对象优势很明显

面向对象是以功能来划分问题,而不是步骤

3、面向对象的三大特性?分别解释下? 封装:通常认为封装是把数据和操作数据的⽅法封装起来,对数据的访问只能通过已定义的接⼝。继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为⽗类(超类/基类),得到继承信息的被称为⼦类(派⽣类)。多态:分为编译时多态(⽅法重载)和运⾏时多态(⽅法重写)。要实现多态需要做两件事:⼀是⼦类继承⽗类并重写父类中的⽅法,⼆是⽤⽗类型引⽤⼦类型对象,这样同样的引⽤调⽤同样的⽅法就会根据⼦类对象的不同⽽表现出不同的⾏为。 4、什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?

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

5、JDK和JRE的区别是什么?

JDK >> JRE >>JVM (>>代表包含)JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。 6、为什么Java代码可以实现一次编写、到处运行?

JVM(Java虚拟机)是Java跨平台的关键。

在程序运行前,Java源代码(.java)需要经过编译器编译成字节码(.class)。在程序运行时,JVM负责将字节码翻译成特定平台下的机器码并运行,也就是说,只要在不同的平台上安装对应的JVM,就可以运行字节码文件。同一份Java源代码在不同的平台上运行,它不需要做任何的改变,并且只需要编译一次。而编译好的字节码,是通过JVM这个中间的“桥梁”实现跨平台的,JVM是与平台相关的软件,它能将统一的字节码翻译成该平台的机器码。

注意事项 编译的结果是生成字节码、不是机器码,字节码不能直接运行,必须通过JVM翻译成机器码才能运行; 跨平台的是Java程序、而不是JVM,JVM是用C/C++开发的软件,不同平台下需要安装不同版本的JVM。

机器码和字节码的区别: 机器码,完全依附硬件而存在~并且不同硬件由于内嵌指令集不同,即使相同的0 1代码 意思也可能是不同的 我们知道JAVA是跨平台的,为什么呢?因为他有一个jvm,不论那种硬件,只要你装有jvm,那么他就认识这个JAVA字节码~~~~至于底层的机器码,咱不用管,有jvm搞定,他会把字节码再翻译成所在机器认识的机器码~~

7、Java 和 C++ 的区别?

Java 和 C++ 都是面向对象的语言,都支持封装、继承和多态,但是,它们还是有挺多不相同的地方:

Java 不提供指针来直接访问内存,程序内存更加安全Java 的类是单继承的,C++ 支持多重继承;虽然 Java的类不可以多继承,但是接口可以多继承。Java 有自动内存管理垃圾回收机制(GC),不需要程序员手动释放无用内存。C++同时支持方法重载和操作符重载,但是 Java 只支持方法重载(操作符重载增加了复杂性,这与 Java 最初的设计思想不符)。 Java语法基础篇 1、continue、break 和 return 的区别是什么?

在循环结构中,当循环条件不满足或者循环次数达到要求时,循环会正常结束。但是,有时候可能需要在循环的过程中,当发生了某种条件之后 ,提前终止循环,这就需要用到下面几个关键词:

continue :指跳出当前的这一次循环,继续下一次循环。break :指跳出整个循环体,继续执行循环下面的语句。return 用于跳出所在方法,结束该方法的运行。return 一般有两种用法:return; :直接使用 return 结束方法执行,用于没有返回值函数的方法;return value;:return 一个特定值,用于有返回值函数的方法。 2、成员变量与局部变量的区别? 语法形式 :从语法形式上看,成员变量是属于类的,而局部变量是在代码块或方法中定义的变量或是方法的参数;成员变量可以被 public,private,static 等修饰符所修饰,而局部变量不能被访问控制修饰符及 static 所修饰;但是,成员变量和局部变量都能被 final 所修饰。存储方式 :从变量在内存中的存储方式来看,如果成员变量是使用 static 修饰的,那么这个成员变量是属于类的,如果没有使用 static 修饰,这个成员变量是属于实例的。而对象存在于堆内存,局部变量则存在于栈内存。生存时间 :从变量在内存中的生存时间上看,成员变量是对象的一部分,它随着对象的创建而存在,而局部变量随着方法的调用而自动生成,随着方法的调用结束而消亡。默认值 :从变量是否有默认值来看,成员变量如果没有被赋初始值,则会自动以类型的默认值而赋值(一种情况例外:被 final 修饰的成员变量也必须显式地赋值),而局部变量则不会自动赋值。 3、说一说你对Java访问权限的了解?

java 提供四种访问控制修饰符号,用于控制方法和属性(成员变量)的访问权限(范围):

公开级别:用public 修饰,对外公开受保护级别:用protected 修饰,对子类和同一个包中的类公开默认级别:default没有修饰符号,向同一个包的类公开.私有级别:用private 修饰,只有类本身可以访问,不对外公开. 4、重载和重写有什么区别?

重载就是同样的一个方法能够根据输入数据的不同,做出不同的处理 重写就是当子类继承自父类的相同方法,输入数据一样,但要做出有别于父类的响应时,你就要覆盖父类方法

重载:发生在同一个类中(或者父类和子类之间),方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同。 重写:就是子类对父类方法的重新改造,外部样子不能改变,内部逻辑可以改变。

“两同两小一大”: “两同”即方法名相同、形参列表相同; “两小”指的是子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。