4.Java、Golang面试题—MySQL、Redis、Linux、Nginx
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
本文目录如下
- Java面试题(四)
- 十一、MySQL
- SQL语言包括哪几部分每部分都有哪些操作关键字
- 数据库的三范式是什么
- MySQL常用的存储引擎有哪些
- MySQL中char 和 varchar 的区别是什么
- varchar(50)中50的涵义?
- MySQL里记录货币用什么字段类型好?
- MySQL中 TEXT \ LONGTEXT 数据类型的最大容量是多少
- MySQL的内连接、左连接、右连接有什么区别
- 请说明 select * from tab 的输出结果是什么?
- LIKE声明中的%和_是什么意思
- 什么是索引
- MySQL索引是怎么实现的
- 常用的索引有哪几种类型
- 主键索引与唯一索引的区别?
- 超键、候选键、主键、外键分别是什么
- 为什么要尽量设定一个主键
- MySQL自增主键用完了怎么办
- 主键使用自增ID还是UUID
- 什么是视图为什么要使用视图
- 说一下 MySQL 的行锁和表锁
- 如何做 MySQL 的性能优化
- 什么是数据库连接池? 为什么需要数据库连接池呢?
- 在高并发情况下如何做到安全的修改同一行数据
- 十二、Redis
- 十三、Linux
- 十四、Nginx
Java面试题(四)
十一、MySQL
SQL语言包括哪几部分每部分都有哪些操作关键字
数据库的三范式是什么
- 第一范式强调的是列的原子性即数据库表的每一列都是不可分割的原子数据项。
- 第二范式要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。
- 第三范式任何非主属性不依赖于其它非主属性。
MySQL常用的存储引擎有哪些
MyISAM
(适合查询)
- 优点查询数据相对较快适合大量的 select。
- 缺点不支持事务不支持外键并发量较小不适合大量update。
InnoDB
(适合增删改)
- 优点支持事务支持外键并发量较大适合大量update。
- 缺点查询数据相对较慢不适合大量的select。
MySQL中char 和 varchar 的区别是什么
- char(n) 缺点占用空间适用场景存储密码的 md5 值。
- varchar(n) 可变长度存储的值是每个值占用的字节再加上一个用来记录其长度的字节的长度。
总结从空间上考虑 varcahr 比较合适从效率上考虑 char 比较合适。
varchar(50)中50的涵义?
50
代表该数据类型所允许保存的字符串的最大长度长度小于该值的字符串都可以被保存。
MySQL里记录货币用什么字段类型好?
在 MySQL 中金额用“
DECIMAL
”类型。
MySQL中 TEXT \ LONGTEXT 数据类型的最大容量是多少
- TEXT64kb
- MEDIUMTEXT16Mb
- LONGTEXT4Gb
MySQL的内连接、左连接、右连接有什么区别
- 内连接关键字
inner join
左外连接left join
右外连接right join
。- 内连接是把匹配的关联数据显示出来
- 左外连接是左边的表全部显示出来右边的表显示出符合条件的数据右外连接正好相反。
- 内连接
- 外连接: 左外连接、右外连接、满外连接
请说明 select * from tab 的输出结果是什么?
select * from tab: 是查询所有的表。
LIKE声明中的%和_是什么意思
%
对应于0 个或多个字符,_
只是LIKE语句中的1个字符。
什么是索引
- 索引是数据表中的一列或多列数据。可以用来加速数据查询速度。
MySQL索引是怎么实现的
主流的数据库引擎的索引都是 B+ 树实现的B+ 树的搜索效率可以到达二分法的性能所以索引的性能也是更好的。
常用的索引有哪几种类型
- 普通索引: 最基本的索引它没有任何限制。
- 唯一索引:数据列不允许重复允许为NULL值一个表允许多个列创建唯一索引。
- 主键索引: 数据列不允许重复不允许为NULL一个表只能有一个主键。
- 全文索引是目前搜索引擎使用的一种关键技术对文本的内容进行分词、搜索。
主键索引与唯一索引的区别?
- 主键索引不允许有NULL值唯一索引可以有NULL值。
- 一个表只能有一个主键索引一个表能创建多个唯一索引。
- 相同点: 列中都不允许有重复值。
超键、候选键、主键、外键分别是什么
- 超键
- 候选键
- 主键元组的唯一标识。同一个数据列的主键不能重复且主键的取值不能为NULL。
- 外键在一个表中存在的另一个表的主键称此表的外键
为什么要尽量设定一个主键
- 可以 避免重复数据。
- 可以 提高查询效率精准定位数据。
MySQL自增主键用完了怎么办
自增主键 一般用int类型一般达不到最大值可以考虑提前分库分表的。
主键使用自增ID还是UUID
推荐使用自增ID, 不要使用UUID。
什么是视图为什么要使用视图
视图
是一个虚表是从一个或几个基本表或视图导出的表。- 只存放视图的定义不存放视图对应的数据。
- 基表中的数据发生变化从视图中查询出的数据也随之改变。
- 视图能够简化用户的操作
- 适当的利用视图可以更清晰的表达查询
说一下 MySQL 的行锁和表锁
- MyISAM 只支持表锁InnoDB 支持表锁和行锁默认为行锁。
- 表级锁开销小加锁快不会出现死锁。锁粒度大发生锁冲突的概率高并发量低。
- 行级锁开销大加锁慢会出现死锁。锁粒度小发生锁冲突的概率小并发度高。
如何做 MySQL 的性能优化
- 建立 索引。
- 选择正确的 存储引擎。
- 避免使用
select *
列出需要查询的字段。
什么是数据库连接池? 为什么需要数据库连接池呢?
数据库连接池原理在内部对象池中维护一定数量的数据库连接并对外暴露数据库连接的获取和返回方法。
连接复用
更快的系统响应速度
统一的连接管理
避免数据库连接泄漏
在高并发情况下如何做到安全的修改同一行数据
上锁。有悲观锁和乐观锁两种方案。
十二、Redis
Redis 是什么都有哪些使用场景
Redis是一个开源的、可基于内存、可 持久化 的、
Key-Value
数据库并提供多种语言的API。
Redis 使用场景
- 海量数据的读写
- 数据高并发的读写
Redis 有哪些功能
- 数据缓存
- 数据持久化
- 事务
- 消息队列
- 分布式锁
Redis常用管理命令?
dbsize
: 返回当前数据库 key 的数量。info
: 返回当前 Redis 服务器状态和一些统计信息。monitor
: 实时监听并返回Redis服务器接收到的所有请求信息。shutdown
: 把数据同步保存到磁盘上并关闭Redis服务。flushdb
: 删除当前数据库中所有 key, 此方法不会失败。小心慎用flushall
: 删除全部数据库中所有 key此方法不会失败。小心慎用
Redis 支持的数据类型有哪些
string
(字符串)hash
(哈希): string 类型的字段(key) 和 值(value) 的映射表通常用来存储对象使用。list
(列表): string列表; 一般用于消息队列、缓存列表等场景下。set
(集合): string类型的无序集合集合中不能出现重复的数据。zset
(sorted set有序集合): string类型的有序集合。
Redis 为什么是单线程的
因为 cpu 不是 Redis 的瓶颈Redis 的瓶颈最有可能是机器内存或者网络带宽。
什么是缓存穿透怎么解决
·缓存穿透·指查询数据库中没有的数据缓存无法命中每次请求都要到数据库去查询造成缓存穿透。
解决方案最简单的方法如果一个查询返回的数据为空我们就把空结果进行缓存但它的过期时间会很短最长不超过五分钟。
Jedis 和 Redisson 有哪些区别
Jedis是Redis的Java实现的客户端其API提供了比较全面的Redis命令的支持。
Redisson和Jedis相比功能较为简单不支持排序、事务、管道、分区等Redis特性。
怎么保证缓存和数据库数据的一致性
- 合理设置缓存的过期时间。
- 新增、更改、删除数据库操作时同步更新 Redis。
为什么Redis需要把所有数据放到内存中
Redis为了达到最快的读写速度将数据都读到内存中并通过异步的方式将数据写入磁盘。
Redis 持久化有几种方式
Redis 的持久化有两种方式
RDB
Redis Database指定的时间间隔能对你的数据进行快照存储。AOF
Append Only File每一个收到的写命令都通过 write函数 追加到文件中。
十三、Linux
简单介绍几个你常用的Linux命令
cp
: 复制文件
mv
: 移动文件
touch
: 创建文件
tar
: 解压 压缩
chmod
: 修改权限
nohup java -jar *** &
: 后台运行 jar 包
netstat -lnp|grep 8080
: 根据端口查看这个进程的pid
ps [PID]
: 查看进程的详细信息
kill -9 [PID]
: 终止进程
Linux中找到占用cpu最高的线程
top命令, 找到cpu占用最高的进程
查看该进程的线程, top -p <pid>
Shell 脚本是什么
Shell 脚本是一个文本文件包含一个或多个命令。运行 Shell脚本 会执行里面的所有命令。
十四、Nginx
请解释一下什么是 Nginx?
- Nginx 是一个 web 服务器和反向代理服务器。
Nginx的优缺点
优点
- 占内存小处理响应快可实现高并发连接。
- 可实现负载均衡、http服务器、虚拟主机
- Nginx配置简单
缺点
- 动态处理差。nginx处理静态文件好耗费内存少现在一般前端用nginx作为反向代理抗住压力。
为什么要做动、静分离
- 对资源的响应速度有要求的时候应该将网站静态资源HTMLJavaScriptCSS等与后台应用分开部署提高用户访问静态代码的速度。
- 应该将 静态资源 放到 nginx 中动态资源 转发到 Tomcat 服务器中, 毕竟Tomcat的优势是处理动态请求如.jsp,.do等等。