1.面向对象和面向过程的区别对比:

面向对象易维护、易扩展、易复用,由于面向对象继承、封装、多态的特性,可以设计低耦合的系统易于维护,但因为类的实例化开销较大,所以面向过程性能更高,一般性能是最主要的因素时采用面向过程开发,它没有面向对象那么易维护易扩展易复用。

2.java语言的特点

跨平台、面向对象,支持多线程、支持网络编程。

3.JVM,JDK,JRE都是什么

jvm是运行java字节码的虚拟机,对不同的系统又不同的实现,让相同的代码在不同的机器上都能出一样的结果。

JRE是java的运行环境,它是运行已编译 Java 程序所需的所有内容的集合,包括 Java虚拟机(JVM),Java类库,java命令和其他的一些基础构件。

JDK是Java Development Kit,它是功能齐全的Java SDK。它拥有JRE所拥有的一切,还有编译器(javac)和工具(如javadoc和jdb)。它能够创建和编译程序。

4.什么是java字节码

jvm可以理解的代码就是字节码,(就是扩展名是.class文件),它不需要任何特定的处理器,只面向虚拟机。jvm和字节码实现一次编译随处运行。

5.从java代码到运行起来又哪些步骤?

java源代码通过jdk中的编译器编译生成jvm理解的lava字节码,然后jvm可以运行字节码。

6.java和c++区别是什么?

都是面向对象语言,都支持封装、继承和多态。c++可以操作指针,Java 不提供指针来直接访问内存。Java 的类是单继承的,C++ 支持多重继承;java的接口可以多继承。Java 有自动内存管理机制,不需要程序员手动释放无用内存。

7.构造器是否可以被重写?

构造器不可以,在继承的时候,子类也无法获得父类的构造器和私有的属性。一般要用父类的构造器都是用super,加载顺序?先加载父类吧,那super什么时候执行?

补充:可以重载。

8.说说面向对象

面向对象有封装、多态继承三个特征。

封装是属性私有化,对外提供访问的方法,继承可以通过继承父类实现方法的复用,多态是声明父类指向子类的实例。

好处是什么?常用的场景

9.String,StringBuffer,StringBuilder的区别,为什么String不可变

1.String是不可变的,StringBuffer,StringBuilder可变

2.线程安全上的差别,String因为不可变是线程安全的的,StringBuffer加了同步锁也是线程安全的,StringBuilder线程不安全。
使用上的选择:如果字符串不会更改,使用String类。如果字符串可以更改并且只能从单个线程访问,则使用a StringBuilder就足够了。如果字符串可以更改,并且将从多个线程访问,请使用StringBuffer。
10.java中定义一个不做事且没有参数的构造方法是干什么的?
java程序在执行子类的构造方法的时候,如果没有一个super明确调用一个父类的构造方法,就会调用父类无参数的构造方法,为了防止子类不写super发生编译错误,就加上一个没有参数的构造方法。
11.类可不可以不写构造方法?
如果类一个构造方法都没写,那默认会给它一个无参的。
12.接口和抽象类的区别:

从设计层面上看,抽象类提供了一种 IS-A 关系,子类对象必须能够替换掉所有父类对象(里氏替换)。而接口更像是一种 LIKE-A 关系,它只是提供一种方法实现契约,并不要求接口和实现接口的类具有 IS-A 关系。看不 明白

从使用上来看,一个类可以实现多个接口,但是不能继承多个抽象类。

接口的字段只能是 static 和 final 类型的,而抽象类的字段没有这种限制。

接口的成员只能是 public 的,而抽象类的成员可以有多种访问权限。

抽象类一般会包含抽象方法,抽象方法一定位于抽象类中。

接口是抽象类的延伸,在 Java 8 之前,它可以看成是一个完全抽象的类,从 Java 8 开始,接口也可以拥有默认的方法实现,因为不支持默认方法的接口的维护成本太高了。在 Java 8 之前,如果一个接口想要添加新的方法,那么要修改所有实现了该接口的类。

备注:在JDK8中,接口也可以定义静态方法,可以直接用接口名调用。实现类和实现是不可以调用的。如果同时实现两个接口,接口中定义了一样的默认方法,必须重写,不然会报错。

13.对象相等和引用相等的区别:对象相等比较的是内存中的内容,引用比较的是地址

14.==和equals,==对于基本类型比较值,对于引用类型比较地址;equals方法如果没有被覆盖和==一样,如果被覆盖了就根据内容比较。42 == 42.0为什么是true

15.为什么重写equasl的时候也要重写hashCOde?

因为equals()用来判断两个对象是否等价,hashCode是根据对象的内容算出散列值,要求等价的两个对象散列值一定相等,所以equals()的时候应该一起覆盖hashcode(),保证等价的两个对象散列值也相等。
16。线程,程序,进程
程序是静态的概念,是静态的代码,进程是程序的一次执行过程,是资源分配和调度的基本单位。
17.关于final关键字
 final修饰的基本类型数据,那么值不可改变,如果是引用类型,那么引用不可变。
 final修饰一个类,那么类不能被继承,
 final修饰的方法,在继承体系中可以防止子类重写。
18.java中的异常
异常的祖先是Throwable类,下面有Error和Exception两个子类,Error一般是程序运行时jvm出现的问题,比如oom,Exception是程序本身可以处理的异常。
finally哪怕try和catch里面有return也会执行。
19.什么是受检异常和非受检异常?
受检异常是编程错误,自己无法预料的,所有 RuntimeException和它的子类还有 Error,他们不需要不需要在编译的时候处理。
受检异常是可以恢复的,比如读写文件要catch IOException。
20.java序列化中有些字段不想序列化怎么办?
对不想序列化的变量用transient。
transient关键字的作用是:阻止实例中那些用此关键字修饰的的变量序列化;当对象被反序列化时,被transient修饰的变量值不会被持久化和恢复。transient只能修饰变量,不能修饰类和方法。
21.static的用法:
 修饰变量和方法。被static修饰的东西放在方法区。
 静态代码块(静态代码块—>非静态代码块—>构造方法,该类不管创建多少对象,静态代码块只执行一次)
 静态内部类。
 静态倒包。
22.Java反射
23.对象的深浅拷贝
在拷贝的时候,如果对于基本数据类型进行值传递,对于引用数据类型进行引用传递,那么就是浅拷贝。
深拷贝是基本类型值传递,引用类型创建一个新对象,并复制其中的内容是深拷贝。
java中的clone(),来自Object类,无论深浅拷贝都用它。
https://segmentfault.com/a/1190000010648514
来自https://github.com/Snailclimb/JavaGuide

转载于:https://www.cnblogs.com/coolBing/p/10461739.html

java/javaee基础面试问题相关推荐

  1. Java Web基础面试问题——Cookie和Session

    Java Web基础面试问题 Cookie 和 Session 的区别 什么是HTTP 超文本传输协议,是一种用于分布式.协作式和超媒体信息系统的应用层协议. 设计HTTP最初的目的是为了提供一种发布 ...

  2. java arraystoreexception_java基础面试

    前言 熬夜整理了一份java基础面试题,希望大家支持,如果文中有错误希望大家指正: 公众号:「知识追寻者」 ❝ 知识追寻者(Inheriting the spirit of open source, ...

  3. Java开发基础面试知识点

    目录 Java基础 数据类型 ==和equals的区别 hashcode()和equals()方法 String.StringBuilder.StringBuffer区别 访问权限修饰符 final修 ...

  4. JAVA多线程和并发基础面试问答

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一.在 ...

  5. ***JAVA多线程和并发基础面试问答

    多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一.在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题.(校对注:非常赞同这个观 ...

  6. “面试不败计划”: java语言基础面试题(三)

    点击上方"好好学java",选择"置顶公众号" 优秀学习资源.干货第一时间送达! 好好学java java知识分享/学习资源免费分享 关注 精彩内容 java实 ...

  7. java 多线程并发 问题_JAVA多线程和并发基础面试问答

    原文链接 译文连接作者:Pankaj  译者:郑旭东  校对:方腾飞 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一.在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌 ...

  8. Java基础面试16问

    来自三太子敖丙的Java基础面试16问 原文地址 ** 说说进程和线程的区别? ** 进程是程序的一次执行,是系统进行资源分配和调度的独立单位,他的作用是是程序能够并发执行提高资源利用率和吞吐率. 由 ...

  9. 百一测评java基础答案_百一测评——《Web应用开发》选择题(含参考答案)—JavaEE基础...

    <百一测评--<Web应用开发>选择题(含参考答案)-JavaEE基础>由会员分享,可在线阅读,更多相关<百一测评--<Web应用开发>选择题(含参考答案)- ...

最新文章

  1. JavaEE Web开发之Servlet篇
  2. 比较简单的c语言编辑器,大佬们,小菜鸟想问一问用vc编译器做简易画图软件
  3. iis php json文件,配置iis支持.json格式的文件
  4. 车辆跟驰模型matlab代码实现_MATLAB——考虑驾驶员特性及前车速度的快速路模型...
  5. 【渝粤教育】国家开放大学2018年春季 0341-21T高级英语听力(2) 参考试题
  6. 上传附件_留学落户|上传附件预审时一定一定要注意的问题!
  7. CSS3 背景起始位置 background-origin属性
  8. 程序员和编码员之间的区别
  9. 全栈创建一个小程序(mpvue+nodejs+mysql)---(一)--本地开发
  10. Python游戏编程入门(一)——初识Pygame
  11. 学习嵌入式必须学习32单片机吗?
  12. python爬虫什么意思-通俗的讲,网络爬虫到底是什么?
  13. Titanic第二章:第一节数据清洗及特征处理
  14. 三年半经验,蚂蚁头条快手怎么选?网友:第一次看到头条比快手offer低的
  15. 想要分离歌曲内的伴奏?轻松搞定
  16. 备份微信聊天记录到电脑上,并且可以随时导回
  17. Python从入门到实践第9章课后作业
  18. 记一次微信H5支付失败(网络环境未能通过安全验证,请稍后再试)解决方案
  19. 大白话解析Context中的cancelCtx
  20. 视频教程-拼多多返利系统二-Java

热门文章

  1. Spring 创建对象的问题,不同构造方法创建对象,使用工厂类类获取对象、单例或多例、延迟创建问题
  2. Java字符编码的转化问题
  3. Servlet+MySQL使用DBCP数据库连接池实现用户登录
  4. Jenkins构建之常用的触发器和Git Hook自动构建
  5. Map与Set的经典OJ题
  6. android 组件 线程,Android UI线程和非UI线程
  7. python os.popen.readlines异常_python中执行sed命令操作源文件时出现错误
  8. 有效可靠地管理大规模 Kubernetes 集群
  9. 技术解析系列 PouchContainer Goroutine Leak 检测实践
  10. getcwd和pwd为什么不一样_企业职工,公务员为什么缴纳的养老保险不一样呢?