成长就是要多学、多问、多看、多记、

    

记录面试笔记(附分析解答-持续更新)

对于一个java开发工程师来讲 面试是一道很大的门槛, 更何况还是对于自己的一个能力的一个评估!
提什么问什么 你要会答什么才行!所以总结一下吧! 还是要多看看喽~

整理一下问题吧!

随便看看 (博主自己的一些面试记录整理及)

近期更新时间2020/05/29

MySql和Oracle如何实现分页

Mysql分页

关键词:limit,limit m,n
其中m表示起始位置的下标,下标从0开始。n表示要显示的条数,

比如:我们要查询一个表的第2到5条数据

代码展示

select * from emp limit 1,4;

图片展示

Oracle分页

关键字rownum
rownum 表示返回数据的行号 使用它需谨慎,
不能用rownum大于(大于1的数值)、大于等于(大于或等于1的数值)、=(大于或等于1的数值),
否则无结果。

(使用rownum进行分页,把rownum转成一个普通列,然后再利用运算关系计算即可,比如查询emp表的第2到5条数据。)

代码展示

select * from (select rownum r,t.* from emp t) tt where tt.r >= 2 and tt.r <= 5;

图片展示

推荐公式

select * from (select rownum r,t.* from emp t) tt where tt.r >((pageNo - 1) * pageSize) and tt.r <= (pageNo * pageSize);

批注pageNo 第几页
pageSize 每页有多少数据

SpringBuffer和SpringBuilder的区别

区别一(线程安全)

  1. StringBuilder是线程不安全
  2. StringBuffer是线程安全

区别二

  1. StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
  2. StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

MySQL和Oracle的主要区别:

SQL语法的不同: MySQL较为灵活,Oracle较为严格
MySQL对于事务默认是不支持的,而Oracle对于事务是完全支持
MySQL是单进程多线程,Oracle是多进程

Springcloud ,springboot 和springmvc区别

Spring MVC是基于Spring的一个MVC框架;
Spring Boot是基于Spring4的条件注册的一套快速开发整合包;
Spring Cloud是基于Spring Boot搭建的分布式微服务系统解决方案。

Jvm的了解

Java虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。字节码和不同系统的 JVM 实现是 Java 语言“一次编译,随处可以运行”的关键所在。

什么是字节码?采用字节码的好处是什么?

在 Java 中,JVM可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。

SpringMVC 的工作原理

文字版

用户向服务器发送请求,请求被springMVC 前端控制器 DispatchServlet 捕获;
DispatcherServle 对请求 URL 进行解析,得到请求资源标识符(URL),然后根据该 URL 调用 HandlerMapping
将请求映射到处理器 HandlerExcutionChain;
DispatchServlet 根据获得 Handler 选择一个合适的HandlerAdapter 适配器处理;
Handler 对数据处理完成以后将返回一个 ModelAndView()对象给 DispatcherSevlet ;
Handler 返回的 ModelAndView() 只是一个逻辑视图并不是一个正式的视图, DispatcherSevlet 通过
ViewResolver 试图解析器将逻辑视图转化为真正的视图View;
DispatcherServle 通过 model 解析出 ModelAndView()中的参数进行解析最终展现出完整的 view 并返回给客户端;

展示图版


Springboot篇

什么是 Spring Boot?

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

为什么要用 Spring Boot?

Spring Boot 优点非常多,如:

  1. 独立运行
  2. 简化配置
  3. 自动配置
  4. 无代码生成和XML配置
  5. 应用监控
  6. 上手容易

缺点

  1. 版本迭代速度很快,一些模块改动很大
  2. 由于不用自己做配置,报错时很难定位
  3. 网上现成的解决方案比较少

Spring Boot 的核心配置文件有哪几个?它们的区别是什么?

Spring Boot 的核心配置文件是 application 和 bootstrap 配置文件。
application 配置文件这个容易理解,主要用于 Spring Boot 项目的自动化配置。
bootstrap 配置文件有以下几个应用场景。

  1. 使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息;
  2. 一些固定的不能被覆盖的属性;
  3. 一些加密/解密的场景;

Spring Boot 的配置文件有哪几种格式?它们有什么区别?

.properties 和 .yml,它们的区别主要是书写格式不同。

Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?

启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,
主要组合包含了以下 3 个注解:
@SpringBootConfiguration:组合了 @Configuration注解,实现配置文件的功能。
@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,
如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
@ComponentScan:Spring组件扫描。

Spring Boot 需要独立的容器运行吗?

可以不需要,内置了 Tomcat/ Jetty 等容器。

运行 Spring Boot 有哪几种方式?

  1. 打包用命令或者放到容器中运行
  2. 用 Maven/ Gradle 插件运行
  3. 直接执行 main 方法运行

Spring Boot 自动配置原理是什么?

注解 @EnableAutoConfiguration, @Configuration, @ConditionalOnClass 就是自动配置的核心,首先它得是一个配置文件,其次根据类路径下是否有这个类去自动配置。

SpringBoot 实现热部署有哪几种方式?

主要有两种方式:Spring Loaded
Spring-boot-devtools

Spring Boot 2.X 有什么新特性?与 1.X 有什么区别?

  1. 配置变更
  2. JDK 版本升级
  3. 第三方类库升级
  4. 响应式 Spring 编程支持
  5. HTTP/2 支持
  6. 配置属性绑定
  7. 更多改进与加强...

Springboot篇本期完~ (后续更新!)

cookie 和session区别

cookie数据存放在客户的浏览器上,session数据放在服务器上
cookie的存储限制了数据量,只允许4KB,而session是无限量的
session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。
cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。

Get 和Post区别

GET参数通过URL传递,POST放在Request body中。
GET请求在URL中传送的参数是有长度限制的,而POST没有。
GET请求只能进行url编码,而POST支持多种编码方式。
简单的说: GET产生一个TCP数据包;POST产生两个TCP数据包。
复杂的说: 对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

CSS的四种基本选择器

基本选择器:

  1. 标签选择器:针对一类标签
  2. ID选择器:针对某一个特定的标签使用
  3. 类选择器:针对你想要的所有标签使用
  4. 通用选择器(通配符):针对所有的标签都适用(不建议使用)

记录java基础知识

什么是重载 和 重写???

重载,overload , 在同一个类中 ,方法的名称相同,参数的个数,类型,顺序不同,这样的方法
就构成了方法的重载,想起重载就要想起 构造方法的重载。
方法的重载和返回值类型 ,访问修饰符 无关。

重写,override,想起重写 就想起 toString , 子类重写 父类 Object的toString。
子类重写父类的方法:
1)方法名,参数,返回值类型 三者必须 完全一样,但是方法体中的代码不同。
2) 子类重写方法的访问修饰符不能比父类小。
3) 子类重写方法抛出的异常不能比父类大。

面向对象三大特征:封装 ,继承 ,多态

封装:

将属性设为private私有的,提供公有的public的setteer 和 getter方法

继承:

子类通过extends关键字 继承 父类,子类将继承父类非私有的属性 和 方法。
final修饰的类不能被继承,
构造方法不能被继承,
私有的属性和方法不能被继承。

多态:

1) 父类引用指向子类对象。 (子类继承父类)
2) 子类重写父类的方法。
3) 通过父类引用调用该方法,看起来是调用的父类的方法,但是运行中,还是运行子类重写(Override)的方法。
4) 如果子类没有重写该方法,那么还是调用父类的方法。
5) 如果子类添加了一个新的方法,不能通过父类引用调用这个新方法。

访问修饰符:

public : 公有的 ,到处都可以访问
protected : 受保护的 ,包内友好,如果不同包,要有继承关系 ( 通过super关键字访问 )
默认的(什么都不写) : 包内友好
private : 私有的, 只能在同一个类中被访问 (类的内部友好)

final 关键字

final 表示最终的,它可以修饰 类,属性/变量 , 方法。

当它修饰类的时候,该类不能被继承,比如:String ,StringBuilder,System

当它修饰 属性/变量的时候,表示该属性/变量 ,一旦被赋值就不能被修改

当它修饰 方法的时候,表示该方法不能被重写。

== 与 equals的区别 :

==比较对象的话,比较的是两个对象的地址值
equlas方法是的本意是比较两个对象的内容值是否相等。

如果要使用equals 方法,自己定义的类中必须重写equals方法,才能使用。
比如:String类的equals方法重写了 Object 类中的 equals方法。

但是原 Object类中的equals 比较的 还是对象的 地址值。

ArrayList 和 Vector的区别:

ArrayList :

  1. 多线程不安全,查询效率高,添加删除效率低,
  2. 默认初始容量是0,插入一个容量变为10,
  3. 自动增长约为原来的一半

Vector :

  1. 多线程安全,查询效率高,添加删除效率比ArrayList更低,
  2. 默认初始容量10,
  3. 自动增长容量为原来的一倍

HashMap的特点:

  1. HashMap中存储的是一组值,key value
  2. key值 不能重复 ,只能有一个null键(key),但是可以有多个null值(value)
  3. 如果key重复,则相当于修改
  4. 默认容量为0,添加一个默认初始长度是16,自动增长为原来的一倍
  5. HashMap 多线程不安全

Hashable 多线程安全 , 初始默认容量11个, 自动增长是 原来的1倍 +1 => 23

Error 和 Exception 和 RuntimeException 的区别

Error :是属于 JVM 层次的严重错误 ,导致 JVM 无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息。

Exception :表示编译时异常,这是需要强制捕获 try...catch 或
通过throws关键字抛出的。

RuntimeException :运行时异常,可以不用强制的处理。

访问修饰符能修饰哪些东西???

类名,属性, 构造方法/普通方法

不能修饰 变量

说说异常体系架构 或 Error 和 Exception的区别?

图解:

所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
本站部分内容收集于互联网,如果有侵权内容、不妥之处,请联系我们删除。敬请谅解!

支持一下呗!Y(・∀・)Y
  • QQ
  • AliPay
  • WeChat

  Previous post 20200429
Next post   成长

已有 2 条评论

    1. 回复 叶小明的博客2018new_xiaoerbuyu_org.png 2018new_kuxiao_thumb.png 淦就完了!

评论已关闭

  Timeline:成长

成长就是要多学、多问、多看、多记

updated on :

  关于博主

blog名-小优,平时喜欢跑步,喜欢听一些温柔,轻松的音乐,喜欢接触新事物,对自己的能力有一个很好的认知,人生在于折腾,一寸光阴一寸金,寸金难买寸光阴!我就是我,颜色不一样的烟火!

  近期评论

多情之人 往往最容易被伤 —— by 小优

人生应该树立目标,否则你的精力会白白浪费。

山涧的泉水经过一路曲折,才唱出一支美妙的歌。

如若不是为了一个人,谁肯枯守一座城。城市和爱情,总是有着这样那样的关系。我们会因为一个人,去到那座城,因为那是一座爱的城;我们也会因为一个人,离开一座城,那是一座绝望的伤城。

常求有利别人,不求有利自己。