面试经-记2020年头两次Java面试问题

前言

随着疫情的影响,很多企业不堪重负,然后就把压力压到了“优秀”的员工身上,现在是又是降薪又是裁员的。这不,我也不幸遭殃了,5月份发工资前两三天被告知:“4月份有绩效考核,你的绩效考核不行,所以4月份绩效工资没有。”此时,我就一句****,然后问了一句:“绩效考核标准是?”然后没有回复,此时,机智的我就懂了,降薪了。

某知名外企外包公司面试问题

1. 什么是Springboot?
Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。

Spring Boot 主要有如下优点:
1.容易上手,提升开发效率,为 Spring 开发提供一个更快、更广泛的入门体验。
2.开箱即用,远离繁琐的配置。
3.提供了一系列大型项目通用的非业务性功能,例如:内嵌服务器、安全管理、运行数据监控、运行状况检查和外部化配置等。
4.没有代码生成,也不需要XML配置。
5.避免大量的 Maven 导入和各种版本冲突。

2. Springboot有什么缺点或者不足的地方?
这个问题问我的时候一面懵,随便说了一点,现在在网上找了一下,其实也不好找,欢迎大佬总结
我总结一下网上找到的:
(1)缺少服务注册发现等外围方案;
(2)缺少外围监控集成方案;
(3)缺少外围安全管理方案;
(4)缺少rest落地的URI规划方案;
(5)将原有的spring项目转成springboot项目,很困难,更适合新建的项目。
(6)集成度很高,对于了解底层不容易。(意思是抽风时,问题不好找)

3. SpringCloud的五大核心组件是什么?

  • Eureka(注册中心):服务治理组件,包括服务端的注册中心和客户端的服务发现机制;
  • Ribbon(负载均衡):负载均衡的服务调用组件,具有多种负载均衡调用策略;
  • Hystrix(断路器):服务容错组件,实现了断路器模式,为依赖服务的出错和延迟提供了容错能力;
  • Feign(服务调用组件):基于Ribbon和Hystrix的声明式服务调用组件;
  • Zuul(API网关):API网关组件,对请求提供路由及过滤功能。

4. SpringCloud的五大组件的启动顺序是什么?
Eureka、Ribbon、Feign、Hystrix、Zuul(不一定正确,欢迎补充)
看图说话:
面试经-记2020年头两次Java面试问题_第1张图片
5. 如何实现API网关的动态分配和路由?
找不到答案,希望大佬来补充
我的理解:大概就是通过ip+方法名这种方式去定位和找到对应的路由的。

美云智数公司面试题(听说是美的下的公司)

PS:不知道是他问问题的方式有问题还是我get不到他的点,感觉他问问题的描述很有问题。
1.说下Spring Cloud的熔断机制,分别用到哪些东西?

当一个服务调用另一个服务由于网络原因或自身原因出现问题,调用者就会等待被调用者的响应 当更多的服务请求到这些资源导致更多的请求等待,发生连锁效应(雪崩效应)

断路器有完全打开状态:一段时间内 达到一定的次数无法调用 并且多次监测没有恢复的迹象 断路器完全打开 那么下次请求就不会请求到该服务
半开:短时间内 有恢复迹象 断路器会将部分请求发给该服务,正常调用时 断路器关闭
关闭:当服务一直处于正常状态 能正常调用

详解请看:Hystrix原理与实战

3.两个表关联,根据where条件建完索引后,为啥分页查询仍然缓慢?
PS:我觉得这个问题问得就有问题,先抛开是不是他们项目中遇到的问题不说,只说了建了索引,也没有说建了什么索引
一般这种问题是不存在的,要么就是你建的索引有问题,要么就是SQL有问题。(欢迎指教)
4.数据库索引的运行机制
首先,我们得理解什么是索引?

什么是索引?
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。
索引是一种数据结构。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。
更通俗的说,索引就相当于目录。为了方便查找书中的内容,通过对内容建立索引形成目录。索引是一个文件,它是要占据物理空间的。

索引的基本原理
索引用来快速地寻找那些具有特定值的记录。如果没有索引,一般来说执行查询时遍历整张表。
索引的原理很简单,就是把无序的数据变成有序的查询
(1)把创建了索引的列的内容进行排序
(2)对排序结果生成倒排表
(3)在倒排表内容上拼上数据地址链
(4)在查询的时候,先拿到倒排表内容,再取出数据地址链,从而拿到具体数据

你可能感兴趣的:(面试)