关于面试题

面试题

  • 一 有关题目
    • 1.1 长连接与短连接?
    • 1.2 说说线程池的工作原理?
    • 1.3 Redis如何实现布式锁?
    • 1.4 Redis中管道有什么作用 ?
    • 1.5 Redis与Redisson有什么关系?
    • 1.6 Redis有哪些适用的场景?
    • 1.7 MySQL中有2000w数据,redis中只存了20w的数据,如何保证redis中的数据都是热点数据?
    • 1.8 MyISAM和InnoDB的区别?
    • 1.8 MySQL有哪些锁?
    • 1.9 Mysql如何优化DISTINCT?
    • 1.10 delete、truncate、drop区别
    • 1.11 什么是存储过程?有哪些优缺点?
    • 1.12 varchar(10)和int(10)代表什么含义?
    • 1.13 InnoDB的数据是怎么存储的?
    • 1.14 MyIsam的数据是怎么存储的?
    • 1.15 什么是聚簇索引?

一 有关题目

1.1 长连接与短连接?

长连接:当两端建立连接后,该连接不会断开:是指在一个TCP连接上可以发送多个数据包,但是如果没有数据包发送时,也要双方发检测包以维持这个链连接
短连接:当两端建立连接后,该连接回在执行完后,自动断开;双方需要有数据交互的时候,就建立一个TCP连接,本次交互完成后,就断开这个连接

1.2 说说线程池的工作原理?

线程池(餐厅)的四个组成部分:核心线程(核心员工),非核心线程(兼职员工),阻塞队列(餐厅排的队);当产品提个需求,正式员工回首先接到需求执行任务,如果正式员工都有需求在做,则产品就把需求先放到需求池中,如果排队也排满了,那么就将任务交给兼职员工去做,所有的员工和队列都满了,则执行拒绝任务,如果外包员工做完事了,就会离开;

1.3 Redis如何实现布式锁?

redis要实现分布式锁,应该瞒住互斥性(在任意时刻,只有一个客户端能持有锁),不能死锁(客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续起她客户端能加锁),以及容错性(只要大部分的redis节点正常运行,客户端就可以加锁和解锁)

1.4 Redis中管道有什么作用 ?

一次请求/响应服务器能实现处理心的请求即使久的请求还未被响应。这样就可以将多个命令大宋到服务起,而不用等待回复,最后在一个步骤中读取该答复;这就是管道;

1.5 Redis与Redisson有什么关系?

Redisson是一个高级的分布式协调redis客户端,能帮助用户在分布式环境中轻松实现一些java对象

1.6 Redis有哪些适用的场景?

1. 会话缓存
2. 全页缓存
3. 队列
4. 排行榜/计数器
5. 发布/订阅

1.7 MySQL中有2000w数据,redis中只存了20w的数据,如何保证redis中的数据都是热点数据?

当redis中内存数据集大小上升到一定大小的时候,就会实行数据淘汰策略;

1.8 MyISAM和InnoDB的区别?

MyISAM:适合做个多count的计算,适合插入不频繁而查询非常频繁的操作,并且MyISAM表不支持外键,而InnoDB支持
适用去做大量的count计算以及做事务操作;
InnoDB:适用于列表内容可靠性要求比较高或者要求事务,适用表更新和查询都相当频繁,并且行锁定机会比较大的情况

1.8 MySQL有哪些锁?

MySQL 里,根据加锁的范围,可以分为全局锁、表级锁和行锁三类

1.9 Mysql如何优化DISTINCT?

DISTINCT在所有列上转换为GROUP BY,并与ORDER BY子句结合使用

1.10 delete、truncate、drop区别

  1. truncate和delete只删除数据,不删除表结构 ,drop删除表结构,并且释放所占的空间。
  2. 删除数据的速度,drop> truncate > delete
  3. delete属于DML语言,需要事务管理,commit之后才能生效。
  4. drop和truncate属于DDL语言,操作立刻生效,不可回滚。
  5. 使用场合:
    1. 当你不再需要该表时, 用 drop;
    2. 当你仍要保留该表,但要删除所有记录时, 用 truncate;
    3. 当你要删除部分记录时(always with a where clause), 用 delete。

1.11 什么是存储过程?有哪些优缺点?

存储过程就是一些预编译的SQL语句,直白的理解:存储过程可以说是一个记录集,他是有一些SQL语句组成的代码快,这些SQL语句代码向一个方法一样实现一些过程(CRUD),然后再给这个代码快取一个名字,在用到这个功能的时候好调用就行;
存储过程就是一个预编译的代码快,执行效率比较高;

1.12 varchar(10)和int(10)代表什么含义?

varchar的10代表了申请的空间长度,也是可以存储的数据的最大长度,而int的10只是代表了展示的长度,不足10位以0填充.也就是说,int(1)和int(10)所能存储的数字大小以及占用的空间都是相同的,只是在展示时按照长度展示。

1.13 InnoDB的数据是怎么存储的?

InnoDB的主键索引文件上直接存放该行数据,称为聚簇索引,非主索引指向对主键的引用。

1.14 MyIsam的数据是怎么存储的?

MyIsam索引的节点中存储的是数据的物理地址(磁道和扇区),在查找数据时,查找到索引后,根据索引节点中的物理地址,查找到具体的数据内容。

1.15 什么是聚簇索引?

聚簇索引:将数据存储与索引放到了一块,找到索引也就找到了数据 非聚簇索引:将数据与索引分开存储,索引结构的叶子节点指向了数据的对应行

你可能感兴趣的:(进阶学习,java,面试)