bnuzxh_面试实录

特别鸣谢:KyMiA

方向:Java后端实习

第一家公司:

公司名不透露,非大厂中外合资企业,支持远程实习(钉钉等),面试还挺正式,感觉挺正规


JAVA中的基本数据类型:

Java中总共有8种基本数据类型
4种整型,2种浮点类型,1种字符char类型,1种表示真值的boolean类型
4种整型,short,int,long,byte
2种浮点类型,float,double
1种字符类型,char
1种真值类型,boolean
除了基本数据类型以外,java还有3种引用数据类型
一、类Class引用,Object object= new Integer(1); 来定义一个Interger类
二、接口interface引用 ,list,map
三、数组引用,int[] nums; 数组初始化


创建对象有哪些方式:

方式是否调用构造函数
new一个
Class类的newInstance()
Construtor类的newInstance()
使用Clone方法
使用反序列化
  1. 使用new关键字
    new,Student s = new Student();

  2. 使用Class类的newInstance方法(反射)

Employee emp2 = (Employee) Class.forName("org.exercises.Employee").newInstance();
//或者
Employee emp2 = Employee.class.newInstance();
  1. 使用Constructor类的newInstance方法
Constructor<Employee> constructor = Employee.class.getConstructor();
Employee emp3 = constructor.newInstance();

这两种newInstance方法就是大家所说的反射。事实上Class的newInstance方法内部调用Constructor的newInstance方法。

  1. 使用clone方法
    无论何时我们调用一个对象的clone方法,jvm就会创建一个新的对象,将前面对象的内容全部拷贝进去。用clone方法创建对象并不会调用任何构造函数。

要使用clone方法,我们需要先实现Cloneable接口并实现其定义的clone方法。

Employee emp4 = (Employee) emp3.clone();
  1. 使用反序列化
    当我们序列化和反序列化一个对象,jvm会给我们创建一个单独的对象。在反序列化时,jvm创建对象并不会调用任何构造函数。
    为了反序列化一个对象,我们需要让我们的类实现Serializable接口。
ObjectInputStream in = new ObjectInputStream(new FileInputStream("data.obj"));
Employee emp5 = (Employee) in.readObject();


final关键字及其用法说一下:

final表面意思就是不可更改的,恒量的意思,类似于C语言中的const关键字
这与静态标量static是有区别的,静态变量指的是只有一份存储空间,值是可以改变的。

public static final double E = 2.7182818284590452354;

在Java中final修饰的就是常量,而且变量名要大写;
  1)修饰变量,被final修饰的变量必须要初始化,赋初值后不能再重新赋值。
  2)修饰方法,被final修饰的方法代表不能重写。
  3)修饰类,被final修饰的类,不能够被继承。
      注意:final修饰的类,类中的所有成员方法都被隐式地指定为final方法。
  4)接口中的变量都是public static final 的。

final和static的区别

static可以修饰代码块
当 JVM加载类时,就会执行该代码块,只会被执行一次。
主要用来修饰类的内部结构,例如:属性、方法、代码块、内部类

final可以用来修饰:类、方法、变量,final 方法不能被子类重写
final 类不能被继承,没有子类,final 类中的方法默认是 final 的

提示:这里可以添加计划学习的时间
例如:
1、 周一至周五晚上 7 点—晚上9点
2、 周六上午 9 点-上午 11 点
3、 周日下午 3 点-下午 6 点


HashMap和HashTable的区别:

提示:这里统计学习计划的总量
例如:
1、 技术笔记 2 遍
2、CSDN 技术博客 3 篇
3、 学习的 vlog 视频 1 个


RuntimeExceptiron有哪些?:

提示:这里可以添加学习目标
例如:一周掌握 Java 入门知识


实现多线程的方式:

实现多线程的三种方式

第一种实现方法—继承Thread类,重写run()方法,加入线程所要执行的代即可。
第二种实现方法—实现Runnable接口
第三种实现方法—实现Callable接口

第二种实现方法—实现Runnable接口

第二种实现方法—实现Runnable接口
如果要实现多继承就得要用implements,Java 提供了接口 java.lang.Runnable 来解决上边的问题。
Runnable是可以共享数据的,多个Thread可以同时加载一个Runnable,当各自Thread获得CPU时间片的时候开始运行Runnable,Runnable里面的资源是被共享的,所以使用Runnable更加的灵活。

第三种实现方法—实现Callable接口

Runnable是执行工作的独立任务,但是它不返回任何值。如果你希望任务在完成后能返回一个值,那么可以实现Callable接口而不是Runnable接口。在Java SE5中引入的Callable是一种具有类型参数的泛型,它的参数类型表示的是从方法call()(不是run())中返回的值。


线程和进程的区别:

提示:这里可以添加计划学习的时间
例如:
1、 周一至周五晚上 7 点—晚上9点
2、 周六上午 9 点-上午 11 点
3、 周日下午 3 点-下午 6 点


throws和throw区别:

提示:这里统计学习计划的总量
例如:
1、 技术笔记 2 遍
2、CSDN 技术博客 3 篇
3、 学习的 vlog 视频 1 个

Object有哪些方法:

提示:这里可以添加学习目标
例如:一周掌握 Java 入门知识


你讲一下你知道的设计模式:

提示:这里可以添加要学的内容
例如:
1、 搭建 Java 开发环境
2、 掌握 Java 基本语法
3、 掌握条件语句
4、 掌握循环语句


spring中的有哪些设计模式举例说明:

提示:这里可以添加计划学习的时间
例如:
1、 周一至周五晚上 7 点—晚上9点
2、 周六上午 9 点-上午 11 点
3、 周日下午 3 点-下午 6 点


spring mvc说说(工作流程,原理,核心):

提示:这里统计学习计划的总量
例如:
1、 技术笔记 2 遍
2、CSDN 技术博客 3 篇
3、 学习的 vlog 视频 1 个


第二家公司:

深圳中集智能,隶属中集集体,中公司几百人科技公司,面试稍简单一点,感觉勉强ok


先来一段自我介绍:

提示:这里可以添加学习目标
例如:一周掌握 Java 入门知识


你项目里有Redis,说一下Redis是什么吧:

简单讲一下你对redis的理解

提示:这里可以添加学习目标
例如:一周掌握 Java 入门知识


Redis在你项目中的具体应用:

提示:这里可以添加要学的内容
例如:
1、 搭建 Java 开发环境
2、 掌握 Java 基本语法
3、 掌握条件语句
4、 掌握循环语句


Redis的5大数据类型:

提示:这里可以添加计划学习的时间
例如:
1、 周一至周五晚上 7 点—晚上9点
2、 周六上午 9 点-上午 11 点
3、 周日下午 3 点-下午 6 点


Mysql调优有了解过吗?说一下:

一些数据查询上的优化方面的

提示:这里统计学习计划的总量
例如:
1、 技术笔记 2 遍
2、CSDN 技术博客 3 篇
3、 学习的 vlog 视频 1 个


说说SSM框架和Spring Boot框架区别:

两框架最大的区别

提示:这里可以添加学习目标
例如:一周掌握 Java 入门知识


你学java多久了?具体说下你在校学的java课程:

提示:这里可以添加要学的内容
例如:
1、 搭建 Java 开发环境
2、 掌握 Java 基本语法
3、 掌握条件语句
4、 掌握循环语句


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值