#

MySQL

#
137151次浏览 1782人互动
此刻你想和大家分享什么
热门 最新
12-04 19:04
北京大学 Java
我说了一句话,面试官直接让我回去等通知
螺丝钉儿:聚簇索引的每个叶子16k,3层b+树差不多能放2000-4000w这么多数据。数据再多的话就需要4层b+树了。然后树的深度加一层,访问数据的时候磁盘io就会多一次,消耗性能。好像是这样吧,后面没怎么面过这种技术面了,好多东西忘光了都快。
点赞 评论 收藏
分享
09-11 23:18
已编辑
门头沟学院 Java
26Java 小厂二面面经
自我介绍————1. 短链接项目中创建接口为什么用布隆过滤器?不是有误判的可能性吗,如何保证数据的正确性?高并发场景怎么解决的?    - 布隆过滤器判断不存在的时候是完全准确的,而判断存在的误判率通过对布隆过滤器参数的配置可以降到一个很小的可接受的范围内,在系统不受攻击的情况下使用MySQL数据库的唯一索引作为兜底,如果创建成功的短链接进入数据库持久化时报唯一索引错误,此时执行事务回滚即可。如果同一个链接被高并发地创建,则此时由预防缓存穿透的逻辑解决,首次查询之后Redis会存储空对象,这样之后的请求不会全部打到数据库。2. AQS是什么?【简历写的,其实没答太好】    - 全称是AbstractQueuedSynchronizer,是在JUC包中定义的,内部属性包含有一个int变量一个同步队列,作用是作为一个接口提供锁的通用实现机制。(后面胡扯绕了半天也没说点啥3. 介绍一下HashMap;为什么HashMap不支持多线程并发?HashMap如何解决Hash冲突?ConcurrentHashMap如何实现的?    - 经典八股,说的八九不离十,扩容和红黑树、node数组加锁都提了4. 事务的隔离级别?可重复读是如何实现的?    - 说了读写锁和共享锁,一些当前读和快照读的理解,第一条select执行快照读创建Read View快照,此后的select都访问该快照,但如果执行update语句时,则会执行当前读,一定会去读最新的数据5. 算法:打家劫舍Ⅱ    - 最开始用注释写了个状态转移方程,因为首尾相接不好统一处理,卡了半天    - 面试官提示可以分两种情况,确定偷第一家或者确定不偷,这样不用做统一处理。然后我开了两个dp数组写了一坨答辩代码,    - 面试官说勉强算解决了,提出状态转移方程其实只涉及到了dp[n-2] dp[n-1]和dp[n]三个变量,其实可以用滚动方法优化空间复杂度,我说这个我明白,然后写了个封装函数robRange(int[] nums,int l,int r)把之前的逻辑整合简洁了一些,用上了滚动数组,主函数直接return Math.max(robRange(nums,0,n-1),robRange(nums,1,n));这样又写了半天,算法全过程总共墨迹了十几二十分钟    - 面试官又提示了各种代码细节问题,比如函数返回值没写,有些地方复制的时候没改完美,总算是兜兜转转弄了一份完整代码。    - 后面反问环节:我问了一下“刚才算法那块我感觉我写的有点烂,不知道您怎么看”,面试官说,这个其实就是刷的多就会,刷的少就不熟,我看你刚才反应也还算快的,多练就好。6. 场景代码题: Ⅰ. 单例模式示例代码如下,有哪些问题?----------------------------------------------------public class Singleton {    static Singleton instance;    private Singleton() {    }    static Singleton getInstance() {        if (instance == null) {            synchronized (Singleton.class) {                instance = new Singleton();            }        }        return instance;    }}------------------------------------------------------        - 其实有一堆问题,但是我只说了最明显的:只用了一层检查锁,首次进入的时候可能多个线程进入if块内创建多个单例        - 面试官:这个地方用volatile修饰会怎么样?引导之后我说了一些使用volatile的优点,然后继续问“这样就行了吗”,我说看不出来什么问题了,结果给我讲了1分钟使用new关键字和指令重排序方面的知识,我全程点头啊对对对,不知所措(----------------------------------------------------------------------- Ⅱ. MySQL事务场景题--------------------------------------------------CREATE TABLE t (    id INT PRIMARY KEY,    k INT);INSERT INTO t (id, k) VALUES (1, 1), (3, 3);T A;UPDATE t SET k = 3 WHERE id = 1;COMMIT;T B;SELECT * FROM t WHERE id = 1;UPDATE t SET k = k + 1 WHERE id = 1;COMMIT;-------------------------------------------------- 问:事务A在commit之前因故阻塞了,在事务B的update语句前提交了,问此时事务B提交后id=1的k是多少? 答:B事务提交完成后,此时k=4,因为update语句是当前读,事务A的提交对于B的update是可见的,所以相当于id=1的k先被修改事务A为3,事务B执行自增后变为4------------------------------------------------反问:  公司主营业务是什么?  刚才代码感觉敲的不好,问题大吗?#日常实习#  #面经# #Java# #MySQL#
双飞鼠鼠不会梦到大厂offer:现在小厂都算法,场景了么
查看7道真题和解析
点赞 评论 收藏
分享
2023-04-17 13:09
已编辑
青岛大学 C++
数据库面试题总结自用
#数据库##MySQL##我的求职思考#MySQL:        1.MySQL的索引原理和数据结构能介绍下吗?        2.B+树和B树的区别是什么?        3.MySQL聚簇索引和非聚簇索引的区别?        4.使用MySQL索引都有什么原则?        5.不同的存储引擎是如何进行实际存储的?        6.MySQL的组合索引的结构是什么样的?        7.MySQL索引如何进行优化?        8.事务的四个特点是什么?他们的实现原理是什么?        9.MySQL的redolog、undolog、binlog分别有什么作用?        10.什么是二阶段提交,如何保证宕机时数据的一致性?        11.MVCC是如何是如何实现多版本并发控制的?如何解决读写冲突?        12.MySQL中的幻读是什么?如何解决幻读问题?        13.delete drop truncate的区别是什么?Redis:        1.详细的说说Redis的数据类型?        2.说说Redis的持久化策略?        3.如何利用Redis实现一个分布式锁?        4.说说你对Redis的了解        5.说说缓存穿透、击穿、雪崩的区别        6.Redis如何与数据库保持双写一致性        7.请你说说Redis数据类型中的zset,它和set有什么区别?底层是怎么实现的?        8.说说Redis的单线程架构        9.如何实现Redis高可用        10.说说Redis的主从同步机制        11.说说Redis的缓存淘汰策略   https://blog.csdn.net/qq_45800977/article/details/130197679
点赞 评论 收藏
分享
玩命加载中
牛客网
牛客企业服务