【面试1】

2020-07-08  本文已影响0人  giraffecode9668

基础

1、equals和==(equals和==的区别)
equals:是Object的一个方法,实现对象的比较;复写equals()方法,达到比较对象内容是否相同的目的
==:用于比较是否同一个引用和比较基本数据类型是否相等

2、多态(多态的理解)
把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。
多态是面向对象的重要特性,简单点说:“一个接口,多种实现”。

一、集合

1、集合包括哪些API(集合有哪些)
集合包括Collection接口和Map接口两大类。
Collection是单列数据,定义了存取一组对象的方法的集合;Map是双列数据,存储的是键值对。
Collection的子接口包含了List和Set,List是元素有序、可重复的集合,Set是元素无序、不可重复的集合。

二、线程

1、线程的创建4种方式(创建线程有几种方式)

2、线程生命周期(线程的生命周期有几种)

image.png

3、yield()
线程从运行状态变为就绪状态,释放执行权,本线程可能再次抢到执行权进入运行状态。

4、wait() ( wait() 和 sleep() 的区别 )
线程通信的一组api,是Object的方法,使线程进入阻塞状态,并释放同步监视器。调用notify()或notifyAll

5、sleep()
是线程类(Thread)的静态方法;
调用此方法让当前线程暂停执行指定的时间;
将执行机会(CPU)让给其他线程,但是对象的锁依然保持,因此休眠时间结束后会自动恢复(线程回到就绪状态)

三、mysql

1、mysql数据引擎( 了解的数据库引擎 )

image.png

2、索引、聚簇索引、覆盖索引(三者的理解)

3、隔离级别(什么是赃读、不可重复读、幻读)
数据库事务问题:赃读、不可重复读、幻读

隔离级别 赃读 不可重复读 幻读
读未提交
读提交 ×
可重复读 × ×
可串行 × × ×

Spring

1、spring是什么
Spring是一个轻量级的IoC和AOP容器框架。

spring模块

模块名 作用
Spring Core 核心类库,提供IOC服务
Spring Context 提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等)
Spring AOP AOP服务
Spring DAO 对JDBC的抽象,简化了数据访问异常的处理
Spring ORM 对现有的ORM框架的支持
Spring Web 提供了基本的面向Web的综合特性,例如多方文件上传
Spring MVC 提供面向Web应用的Model-View-Controller实现

2、spring配置方式3种

3、spring的优点

4、IoC的理解(SpringIoc依赖什么实现)

5、AOP理解 (AOP的原理)
用于将业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect)

AOP实现的关键在于 代理模式
AOP代理主要分为静态代理(AspectJ-编译增强)动态代理(Spring AOP)

动态代理:JDK动态代理(实现共同接口)和CGLIB动态代理(继承类改写)

springmvc

1、springmvc的流程(springmvc的流程)
请求 => DispatcherServlet =>
请求HandlerMapping获取handler=> DispatcherServlet =>
HandlerAdapter执行Handler方法获得ModelAndView => DispatcherServlet =>
ViewResolver解析返回视图view => DispatcherServlet =>
View视图渲染返回 => DispatcherServlet
=> 响应

image.png

nginx

1、nginx是什么(nginx的了解)
Nginx---Ngine X,是一款免费的、自由的、开源的、高性能HTTP服务器反向代理服务器;也是一个IMAPPOP3SMTP代理服务器;Nginx以其高性能、稳定性、丰富的功能、简单的配置和低资源消耗而闻名。

也就是说Nginx本身就可以托管网站(类似于Tomcat一样),进行Http服务处理,也可以作为反向代理服务器负载均衡器HTTP缓存

Nginx 解决了服务器的C10K(就是在一秒之内连接客户端的数目为10k即1万)问题。它的设计不像传统的服务器那样使用线程处理请求,而是一个更加高级的机制—事件驱动机制,是一种异步事件驱动结构。

redis

1、数据类型(5种)(reids的数据类型有几种)
String、hash、list、set、sorted set
(一)String
这个其实没啥好说的,最常规的set/get操作,value可以是String也可以是数字。一般做一些复杂的计数功能的缓存。
(二)hash
这里value存放的是结构化的对象,比较方便的就是操作其中的某个字段。博主在做单点登录的时候,就是用这种数据结构存储用户信息,以cookieId作为key,设置30分钟为缓存过期时间,能很好的模拟出类似session的效果。
(三)list
使用List的数据结构,可以做简单的消息队列的功能。另外还有一个就是,可以利用lrange命令,做基于redis的分页功能,性能极佳,用户体验好。本人还用一个场景,很合适—取行情信息。就也是个生产者和消费者的场景。LIST可以很好的完成排队,先进先出的原则。
(四)set
因为set堆放的是一堆不重复值的集合。所以可以做全局去重的功能。为什么不用JVM自带的Set进行去重?因为我们的系统一般都是集群部署,使用JVM自带的Set,比较麻烦,难道为了一个做一个全局去重,再起一个公共服务,太麻烦了。
另外,就是利用交集、并集、差集等操作,可以计算共同喜好,全部的喜好,自己独有的喜好等功能。
(五)sorted set
sorted set多了一个权重参数score,集合中的元素能够按score进行排列。可以做排行榜应用,取TOP N操作。

上一篇下一篇

猜你喜欢

热点阅读