高级java面试中提到一些问题

1.mysql varchar(50) varchar(100)字段中存储相同大小的 ‘hello’ 大小一致吗?
答案:答案是否定的【至少varchar类型需要在数据之前利用一个或者两个字节来存储数据的长度】【二者在内存中的操作方式也是不同的,下面的例子中有体现】。看下面的例子。
如现在用户需要存储一个地址信息。根据评估,只要使用50个字符就可以了。但是有些数据库管理员会认为,反正Varchar数据类型是根据实际的需要来分配长度的。还不如给其大一点的呢。为此他们可能会为这个字段一次性分配200个字符的存储空间。这VARCHAR(50)与VARCHAR(100)真的相同吗?结果是否定的。虽然他们用来存储40个字符的数据,其存储空间相同。但是对于内存的消耗是不同的。对于VARCHAR数据类型来说,硬盘上的存储空间虽然都是根据实际字符长度来分配存储空间的,但是对于内存来说,则不是。其时使用固定大小的内存块来保存值。简单的说,就是使用字符类型中定义的长度,即100个字符空间。显然,这对于排序或者临时表(这些内容都需要通过内存来实现)作业会产生比较大的不利影响。解释可以参见这里。所以如果某些字段会涉及到文件排序或者基于磁盘的临时表时,分配VARCHAR数据类型时仍然不能够太过于慷慨。还是要评估实际需要的长度,然后选择一个最长的字段来设置字符长度。如果为了考虑冗余,可以留10%左右的字符长度。千万不能认为其为根据实际长度来分配存储空间,而随意的分配长度,或者说干脆使用最大的字符长度。
2.mysql中有哪些索引?简单聊聊
索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。
创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。
实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。
上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
建立索引会占用磁盘空间的索引文件。
3.MySQL中的各种引擎
  数据库中的存储引擎其实是对使用了该引擎的表进行某种设置,数据库中的表设定了什么存储引擎,那么该表在数据存储方式、数据更新方式、数据查询性能以及是否支持索引等方面就会有不同的“效果”。在MySQL数据库中存在着多种引擎(不同版本的MySQL数据库支持的引擎不同),熟悉各种引擎才能在软件开发中应用引擎,从而开发出高性能的软件,MySQL数据库中的引擎有哪些呢?一般来说,MySQL有以下几种引擎:ISAM、MyISAM、HEAP(也称为MEMORY)、CSV、BLACKHOLE、ARCHIVE、PERFORMANCE_SCHEMA、InnoDB、 Berkeley、Merge、Federated和Cluster/NDB等,除此以外我们也可以参照MySQL++ API创建自己的数据库引擎。
详情请参考:https://blog.csdn.net/gaohuanjie/article/details/50944782
4 mysql 索引
5. delete drop truncate之间的区别
6. 数据库三大范式
7. hashmap 详细解释 (原理 数据结构 put动作的底层原理)
8. 多线程状态
9. 多线程wait sleep的区别
10. dubbo zookeeper
11. rabbitmq
12. redis 分页 排序如何实现
13. 多线程 重入锁 synchronized
14. 数据库悲观锁 乐观锁
15. 数据库优化建议
16. Spring
17. 解释Spring aop ioc
18. 数据库隔离级别 事务四大原则
19. spring事务隔离级别、传播行为
20. redis 持久化实现
21. redis 宕机后数据怎么恢复
22. 多线程中notify notifyAll 各自的场景什么时候用notify 什么时候用notifyAll
23. 架构出一套库存系统
24. 如何做到jvm调优
25. intellij idea 配置jvm option
26. jvm中内存分区都有哪些
27. linux查询日志中异常信息
28. linux中配置环境变量
29. tomcat 配置
30. spring cloud
31. servlet jsp的关系
32. redis 5种数据类型
33. 线程池原理
34. jdk8中 String的变化
35. jdk8的新特性
36. 分布式环境中如何实现锁的概念
37. 分布式 session
38. 加密算法 rsa实现原理
39. Spring中用到的设计模式 具体解释
40. Java静态代理 动态代理

猜你喜欢

转载自blog.csdn.net/dingpf1209/article/details/80795737