666
点赞 评论

相关推荐

05-04 21:11
门头沟学院 Java
面试官很和蔼,很尊重我。面试开始时,首先介绍了自己所工作的部门,当时说的太快,我听的不太清。接下来就是项目和八股了:1、你先介绍一下自己在做项目时遇到的难点,以及你是怎么解决的。答的稀烂,没提前准备。直接让面试官问我了,感觉面评会很差!2、那你先说一下怎么基于拦截器进行Token的校验以及刷新,答的越详细越好。3、为什么要用双层拦截器?4、知道ThreadLoacl的底层原理吗?说一下。5、知道死锁吗?解释一下死锁。6、死锁怎么解决呢?答了一次性申请所有资源和申请不到资源就自己释放自己的资源。面试官肯定了第二种,说不同的场景要用不同的解决方法。我甚至让面试官说一种场景,面试官被我干沉默了半分钟,说这不太好说,但还是说了一个场景。7、解释一下通过分布式锁以及stream消息实现高并发一人一单的优化。答的很烂,说了个大概,分布式锁实现一人一单,stream加快执行效率。8、用到了什么分布式锁呢?9、setnx的底层原理是什么?知道吗?10、假如现在有三个线程来下单了,库存只有两个了,那三个线程都判断库存充足,并且都是首次下单,是不是三个线程都能判断自己可以下单成功,这时你将三个线程中的用户id和优惠券id都放到消息队列中,这个时候只能消耗两条消息,还有一条消息怎么办?没回答上来(事实上,库存判断+是否下过单判断+减库存+写入Stream队列全部封装在一个Lua脚本中原子执行,Lua脚本具有原子性,多个线程即使并发执行EVAL命令,Redis仍会串行执行脚本逻辑,保证同一时刻只有一个线程完成判断与写入流程。)11、说一下是怎么使用工厂模式和策略模式实现布隆过滤器解决缓存穿透。12、解释布隆过滤器的底层原理。13、知道MySQL吗,说一下都有哪些索引?14、联合索引知道吗?底层是什么数据结构?15、解释一下B+树。16、联合索引的查询规则最左前缀法则的底层原理。答了JavaGuide上的,通过每个索引筛选掉一部分数据。面试官说,那直接从第二个索引也能进行筛选啊,怎么解释呢?17、说一下事务的隔离级别。18、脏读、不可重复读和幻读。19、场景题:N个数的文件中,怎么搜索到前10大的数字?答的是将数据先存到DB表中,再读取就可以了。面试官说,这效率太慢了,一般不采取。20、知道ReenTrantLock吗?说一下它的底层原理。就回答了个CLH锁,忘记AQS了.......算法题:股票问题Ⅲ,没撕出来,跟着carl刷到动态了,但还没刷到这一题,面试官提醒了我3次,还是不会。反问环节总结:人生中的第一次大厂面试,总时长1小时15分钟。自己准备的不够充分,回答问题逻辑性不够(回答的很多话都需要面试官去理解,然后问我是不是这样),很多知识点的底层原理也不太清楚。虽然结果不好,但是已经尽力了,毕竟从决定学java到现在不过才2个月,还是要多学多思考。
美团一面2111人在聊 查看20道真题和解析
点赞 评论 收藏
分享
05-19 23:59
湖南大学 Java
1、慢SQL的具体内容;2、应用DB是如何确保事务的持久性;    写前日志机制:再事务对数据库进行修改之前,数据库系统回先将事务的操作信息记录到日志文件中。这些日志信息包括事务的开始,每个操作的细节(如修改了哪些数据、修改前后的值等)以及事务的结束等内容。日志文件通常被写入磁盘等持久化存储设备上。这样可以保证系统出现故障时,可以更具日志来恢复事务的执行状态;    在mysql中,事务的持久性主要通过1、利用InnoDB的存储引擎的日志机制,当事务对数据进行修改时,InnoDB存储引擎会先将这些修改记录记录到redolog中。redo log属于物理日志,它记录的是数据页的物理修改情况。例如,当更新一行数据时,redo log会记录该数据页中具体字节的修改内容。binlog时记录了所有数据库的修改操作,包括数据的增删改查。binlog是逻辑日志,记录的是sql语句或者行的变化。例如,执行一条“UPDATE table SET column = value WHERE condition”语句,binlog会记录这条语句的执行细节。2、通过事务提交时的磁盘写入操作:当事务提交时,mysql会将事务涉及的数据页从内存中的缓冲池刷新到磁盘。缓冲池是InnoDB用于缓存数据页和索引页的内存区域,数据的修改首先是在内存中进行的。写入操作不是完全同步的,而是结合了redo log机制,因为redo log已经保证了事务的持久性,数据页的最终写入磁盘可以在检查点过程中进行。3、事务的隔离级别4、自适应哈希索引流的机制    自适应哈希索引是一种用于优化数据库性能的机制,它可以根据数据库的负载和查询模式动态地创建和维护哈希索引,以下是具体介绍:工作原理    数据页监控 :InnoDB 存储引擎会监控对表中数据页的访问情况。当发现某些数据页被频繁访问时,就会考虑为这些页创建哈希索引。    哈希索引创建 :如果一个数据页被访问的次数超过了设定的阈值,并且内存中还有足够的空间来存储哈希索引结构,InnoDB 会自动在后台为该数据页上的某个索引创建一个哈希索引。    哈希索引维护 :随着数据的插入、删除和更新操作,哈希索引会自动进行维护,以保证其有效性和准确性。当数据页的访问频率降低,或者内存空间不足时,InnoDB 也会自动删除不再需要的哈希索引。5、网络协议http、https协议的区别6、timewait的作用7、TCP如何进行拥塞控制8、操作系统的内存管理机制    虚拟内存(虚拟内存是一种内存管理技术,使得程序可以使用比实际物理内存更大的地址空间。它通过将程序的地址空间分割成多个页面或者段,然后将这些页面或者段部分的存储在内存中,而将其他部分存储在磁盘外部存储器上。当需要访问一个不在内存中的页面时,由操作系统负责将其调入内存):分页式存储、段页式存储    地址映射:静态重定位(绝对地址映射)、动态重定位(相对地址映射)    内存保护:分区保护:在分区分配系统中,为每个分区设置保护机制来限制进程的访问范围;页表保护:在虚拟内存系统中,通过页表来实现内存保护。每个进程都有自己的页表,页表中除了包含虚页到物理块的映射关系外,还包含访问权限位。9、软链接和硬链接的区别软链接软链接是一个独立的文件,它包含了一个指向目标文件或目录的路径。从本质上来说,软链接就像是一个快捷方式,它有自己的 inode(文件系统用于存储文件元数据的结构)。例如,如果有一个文件 file1,创建一个软链接 symlink1 指向它,symlink1 有自己的 inode,其内容是指向 file1 的路径。软链接可以跨文件系统,也就是说,软链接可以位于与目标文件不同的文件系统上。例如,目标文件在 /dev/sda1 分区,软链接可以在 /dev/sda2 分区。硬链接硬链接是直接指向目标文件 inode 的链接。多个硬链接共享同一个 inode,它们是同一个文件的不同名称。例如,对于文件 file1,创建硬链接 hardlink1 后,hardlink1 和 file1 都指向同一个 inode,操作系统将它们视为同一个文件的两个入口。硬链接不能跨文件系统。因为硬链接依赖于目标文件的 inode,而 inode 号在不同的文件系统中是独立的,所以硬链接必须位于与目标文件相同的文件系统中。
查看9道真题和解析
点赞 评论 收藏
分享
牛客网
牛客企业服务