java高频面试题汇总 - Go语言中文社区

java高频面试题汇总


 

目录

一、程序运行结果

1、自增变量

2、类初始过程

3、方法的参数传递机制

4、局部变量与成员变量

二、框架

1、spring bean的作用域

2、SpringMvc工作流程

三、Linux常用服务类相关命令

四、git分支相关操作

五、MYSQL什么时候建索引

六、Redis在项目中的使用场景

七、Elasticsearch 和 solr 的区别

八、单点登录


一、程序运行结果

1、自增变量

如下代码的运行结果:

public static void main(String[] args) {
		int i = 1;
		i = i++;
		int j = i++;
		int k = i + ++i * i++;
		System.out.println("i=" + i);
		System.out.println("j=" + j);
		System.out.println("k=" + k);
	}

输出:

2、类初始过程

以下代码运行结果:

结果:

初始化顺序为:

父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、

父类非静态变量、父类非静态代码块、父类构造函数、子类非静态变量、子类非静态代码块、子类构造函数

注意:子类和父类具有同名的静态变量(不会被覆盖)和非静态变量(会被覆盖);静态成员只有在类加载时初始化一次

3、方法的参数传递机制

以下程序输出什么

结果:

i = 1

str = hello

num = 2

arr = [2,2,3,4,5]

my.a = 11

形参是基本数据类型:传递数据值

实参是引用数据类型:传递地址值;特殊的类型:String、包装类等对象不可变性

4、局部变量与成员变量

以下程序输出什么

结果:

分析:

(1)Exam5 obj1 = new Exam5();

静态变量、非静态变量初始化:i=0【obj1 】,j=0【obj1 】,s=0【Exam5 】

执行非静态代码块:i=0【obj1 】,j=1【obj1 】,s=1【Exam5 】,i=1【局部】

(2)Exam5 obj2 = new Exam5();

静态变量、非静态变量初始化:i=0【obj2】,j=0【obj2】,s=0【Exam5 】

执行非静态代码块:i=0【obj2 】,j=1【obj2 】,s=2【Exam5 】,i=1【局部】

(3)obj1.test(10);

i=1【obj1 】,j=1【obj1 】,s=3【Exam5 】,j=11【局部】

(4)obj1.test(20);

i=2【obj1 】,j=1【obj1 】,s=4【Exam5 】,j=21【局部】

(5)obj2.test(30);

i=1【obj1 】,j=1【obj1 】,s=5【Exam5 】,j=31【局部】

二、框架

1、spring bean的作用域

(1)singleton:默认值,当IOC容器一创建就会创建bean实例,而且是单例的

(2)prototype:原型的,当IOC容器一创建不会实例化该bean,每次调用getBean创建一个新的对象

方法时再实例化bean,而且每次

(3)request:每次请求实例化一个bean

(4)session:在一次会话中共享一个baen

2、SpringMvc工作流程

三、Linux常用服务类相关命令

四、git分支相关操作

五、MYSQL什么时候建索引

六、Redis在项目中的使用场景

数据类型

使用场景

String

比如说 ,我想知道什么时候封锁一个IP地址。Incrby命令

Hash

存储用户信息【id,name,age】

Hset(key,field,value)

Hset(userKey,id,101)

Hset(userKey,name,admin)

Hset(userKey,age,23)

----修改案例----

Hget(userKey,id)

Hset(userKey,id,102)

为什么不使用String 类型来存储

Set(userKey,用信息的字符串)

Get(userKey)

不建议使用String 类型

List

实现最新消息的排行,还可以利用List的push命令,将任务存在list集合中,同时使用另一个命令,将任务从集合中取出[pop]。

Redis—list数据类型来模拟消息队列。【电商中的秒杀就可以采用这种方式来完成一个秒杀活动】

Set

特殊之处:可以自动排重。比如说微博中将每个人的好友存在集合(Set)中,

这样求两个人的共通好友的操作。我们只需要求交集即可。

Zset

以某一个条件为权重,进行排序。

京东:商品详情的时候,都会有一个综合排名,还可以按照价格进行排名。

七、Elasticsearch 和 solr 的区别

  1. 当实时建立索引的时候,solr会产生io阻塞,而es则不会,es查询性能要高于solr。
  2. 在不断动态添加数据的时候,solr的检索效率会变的低下,而es则没有什么变化。
  3. Solr利用zookeeper进行分布式管理,而es自身带有分布式系统管理功能。Solr一般都要部署到web服务器上,比如tomcat。启动tomcat的时候需要配置tomcat与solr的关联。【Solr 的本质 是一个动态web项目
  4. Solr支持更多的格式数据[xml,json,csv等],而es仅支持json文件格式。
  5. Solr是传统搜索应用的有力解决方案,但是es更适用于新兴的实时搜索应用。
    1. 单纯的对已有数据进行检索的时候,solr效率更好,高于es。
  6. Solr官网提供的功能更多,而es本身更注重于核心功能,高级功能多有第三方插件。

八、单点登录

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_38151401/article/details/105206898
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-04-18 19:31:43
  • 阅读 ( 1171 )
  • 分类:面试题

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢