7月23号晚上一面抖音后台,当时面的时候很多问题都不太会,模棱两可。面完后面试官叫我等一会儿不要退出,最后给我说时间太晚了,今晚就到这里吧,后续通知等hr安排。我还惊喜的觉得难道这就过了?果然,今天收到了感谢信。复盘了一下自己的面试过程(发现自己当时就是在胡扯,过才说不过去!)。面经写在下面,复盘之后加上了需要答的点。秋招第一次面试裸面,没怎么准备,结果也没啥奇怪的。祝各位兄弟姐妹们后续面试顺利 :)
ES如何实现的高可用?
(分布式集群、数据备份......)
如果 ES 某个服务器挂掉,数据会不会丢失?
一个索引里面的数据,被分成多个 shard 进行存储【横向扩展,提高性能(可以分布式并行操作)】,shard 的数据有多个备份,每个 shard 都有一个 primary shard , 和几个replica shard (在其他的机器上,不在同一个节点上)。因此一个结点挂掉,master 会让 primary shard 对应的 replica shard(在其他机器上)切换为 primary shard。
ES 是基于CAP 当中的那两个?
个人觉得 AP
MySQL InnoDB 数据如何存储数据的?索引是如何被存储的?
所有数据都存放在表空间(tablespace)中,表空间由段(segment)、区(extent)、页(page)、行(Row)组成。数据段可以看成是B+树的叶子结点,索引段可以看做是B+树的非索引结点。一个区可以有64个的页。页是磁盘管理的最小单位。最终最小的单位是行,最终将数据按照行的方式存储。
B+聚簇索引叶子节点上记录了行的全部列数据(加上事务id列及回滚段指针列);如果你在表上创建了二级索引,其叶子节点存储了键值加上聚集索引键值。B+树本身并不能找到具体的一条记录,只能找到该记录所在的页。
Java vailiate 关键字的作用
可见性 & 指令重排
Java 内存模型、ThreadLocal 关键字(线程变量独享)
如何不用锁来 new 一个线程安全的对象 (final 关键字)
Redis 常用命令?有啥坑?如果存储一个较大的value对象会有什么后果?(面试官:阻塞后续的命令)
Redis如何实现高可用?
(Master、slave、备份、哨兵、持久化)
Collections.sort 咋实现的?这种排序方式是稳定的还是不稳定的?
底层调用还是Arrays.sort() 方法。排序的数据量小于60采用快排。排序数据类型:基本类型采用快排(无须考虑稳定性)对于引用型数据来说采用的是归并排序。
原理简介:http://svn.python.org/projects/python/trunk/Objects/listsort.txt 是个基于MergeSort 改进的 TimSort 方法。TimSort算法就是找到已经排好序数据的子序列,然后对剩余部分排序,然后合并起来
Java什么变量存在堆里
如何确定Java栈的大小?
全部评论
(3) 回帖