Java教程

赛意科技Java初面

本文主要是介绍赛意科技Java初面,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.      静态变量和实例变量的区别。它们加载的时机是什么时候?

  1. 静态变量前要加static关键字,而实例变量前不加。
  2. 静态变量属于类,在加载类的时候,就加载了静态变量。
  3. 实例变量属于对象的属性,创建了实例对象,实例变量才会被分配空间。
  4. 静态变量可以直接使用类名来调用,实例变量必须创建对象之后才来使用。 

参考博客:https://blog.csdn.net/hjq_ku/article/details/122452611

 

 2.      包装类和基本数据类型的区别?

a、包装类是对象,拥有方法和字段,对象的调用都是通过引用对象的地址;基本类不是。

b、包装类型是引用的传递;基本类型是值的传递

c、声明方式不同:

                基本数据类型不需要new关键字;

                包装类型需要new在堆内存中进行new来分配内存空间

d、存储位置不同:

                基本数据类型直接将值保存在值栈中;

                包装类型是把对象放在堆中,然后通过对象的引用来调用他们

e、初始值不同:

                int的初始值为 0 、 boolean的初始值为false

                包装类型的初始值为null

f、使用方式不同:

                基本数据类型直接赋值使用就好;

                包装类型是在集合如 coolectionMap时使用 

参考博客:https://blog.csdn.net/weichi7549/article/details/108745119

 

 3.      面向对象的几个特征

有四大特征:

抽象

封装

继承

多态 

https://m.php.cn/faq/421584.html

 

 4.      抽象类和接口的区别

抽象类是类只能被单继承,接口可以被多实现。

接口中只能有抽象方法,抽象类中有抽象方法,也可以有普通的方法。

接口使用的是interface关键字,抽象类用abstract class来定义。 

https://blog.csdn.net/qq_47908816/article/details/126236967

 

 5.      String、StringBuffer、StringBuilder的区别

 

String是不可变的,StringBuffer和StringBuilder是可变的。

String、StringBuffer是线程安全的,StringBuilder是线程不安全的。

不安全的速度最快,安全的慢一些,String最慢。 

 

https://blog.csdn.net/zxl646801924/article/details/84646918

 

 6.      HashMap扩容原理,什么时候扩容

这里回答的不好,需要重点学习一下。 

当hashmap中的元素个数超过数组大小*loadFactor时,就会进行数组扩容,loadFactor的默认值为0.75,也就是说,默认情况下,数组大小为16,那么当hashmap中元素个数超过16*0.75=12的时候,就把数组的大小扩展为2*16=32,即扩大一倍,然后重新计算每个元素在数组中的位置。

 

 7.      Java的序列化与反序列化。

实现了数据的持久化,通过序列化可以把数据持久地保存在硬盘上(磁盘文件)。

利用序列化实现远程通信,在网络上传输字节序列。

 

 8.      union和union all的区别?哪个速度快

union会去重,进行默认规则排序。

union all 不会去重 ,不会进行排序,速度快。 

https://blog.csdn.net/a200822146085/article/details/119545374

 

 9.      是否设计过数据库,数据库的三范式?

第一范式:保证每列的原子性,不可再拆分。

第二范式:保证一张表只描述一件事情。有主键,非主键字段依赖主键。

第三范式:保证每列都和主键直接相关。非主键字段不能相互依赖。

https://blog.csdn.net/charlesyoosky/article/details/89204229

https://baijiahao.baidu.com/s?id=1703973144064369296&wfr=spider&for=pc

 

 10.  主键索引和唯一索引的区别。

主键是一种约束,一张表只有一个;

唯一索引是一个索引,可以为多个字段设置唯一索引。

唯一索引允许为空,主键列不允许为空值。

 

11.  Sql语句优化的思路?

尽量避免全表扫描,考虑在where及order by涉及的列上建立索引。

尽量避免可能引起索引失效的写法,例如:

1   对null进行判断。

2   使用or来连接,or可以改写为 union all

3   避免使用like操作。

4   避免使用in 和 not in , 尽量使用 between and。

等其他操作。

 

参考博客:https://blog.csdn.net/biyusr/article/details/125599865

 

 12.  视图是否会自动刷新,如何实现视图的自动刷新?

单表的视图会自动刷新。多表的视图不会自动刷新。

可以使用触发器实现视图的自动刷新。

 

13.  谈谈对IOC的理解?

这里主要分为两方面去谈,一个是对象的创建交给ioc容器去创建与管理,一个是依赖注入。

 

14.  @autowired默认注入方式是什么?构造器注入的前提条件与setter方法注入前提条件。

默认注入方式是根据类型去注入,类的名称。

set方法注入前提条件:在配置的类中有对应属性的set方法。

构造器注入前提条件:在配置的类中有对应的有参构造器。 

https://blog.csdn.net/m0_52325708/article/details/125669000

 

15.  谈谈对AOP的理解

面向切面,抽离出一些与业务无关的操作,例如记录日志、事务管理。

 

16.  Spring的AOP中环绕通知与后置通知的执行顺序?

最新spring版本环绕通知在最后。

 

17.  MQ解决了什么痛点?

异步、解耦、消峰

https://blog.csdn.net/lisu061714112/article/details/116465216

 

18.  Redis的主从架构与哨兵模式。哨兵是如何选主的?

哨兵也是分布式集群架构,当主宕机后,哨兵会进行监控,通过选举投票来选择一个主。哨兵会把自己选择主的消息发给其他的哨兵,如果大多数都同意,那么就选定了主。

 

参考博客:https://blog.csdn.net/a745233700/article/details/112451629

 

19.  Redis数据量过大,占用内存,如何解决?

采用热点数据定时过期的方式。

参考博客:http://www.muzhuangnet.com/show/47034.html

 

20.  Mybatis的映射器,xml文件与接口是如何映射的?

通过反射的方式拿到接口的类型然后再来对应相应的xml文件。

参考博客:https://blog.csdn.net/weixin_38192427/article/details/123340994

 

21.  Mybatis的xml文件的引入方式,有哪几种?

绝对路径引入:url

相对路径引入:resource

mapper接口引入:class

package引入:name

 

参考博客:https://www.jianshu.com/p/f08ca40e7260

 

22.  Mybatis的大概执行流程是怎样的?

解析配置文件,获取数据源信息,建立连接。

解析mapper文件,获取sql语句,执行sql。

解析执行结果,并返回。 

https://blog.csdn.net/fengzhizi520m/article/details/118330815

 

23.  Mybatis的配置文件可以配置哪些内容?

environments: 环境配置,一些数据源信息等。

properties:属性信息,可以进行动态的设置值。

typeAliases: 类型别名.

plugins: 插件。等

参考博客:https://blog.csdn.net/weixin_44688973/article/details/125891522

 

24.  Mybatis的一级缓存与二级缓存?什么时候用到一级缓存,什么时候用到二级缓存?

一级缓存是sqlsession级别,二级缓存是mapper级别。一级缓存是默认开启,二级缓存默认没有开启。查询的时候,会先看缓存里有没有,有就取缓存,没有就去取数据库,然后存入缓存。那么是如何找到缓存的?缓存是根据id,sql语句作为key来存储,下次再根据这个key来查找就可以了。

 

其他:又到了金九银十面试季,且面且珍惜。初面为电话面试, 对Java系列的基本功考察还是比较多,总体难度不大,面试体验比较好。

这篇关于赛意科技Java初面的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!