栈实现队列,队列实现栈,网上挺多答案的,你可以搜一搜,这个算法题比较麻,它非常多,建议你刷够 leetcode 的前 200 道题。如果你有时间的话,没时间你就看看面经看要去的公司可能会有哪些常见的算法题,记下来思路就行。后面的项目我建议你自己列一个文档,里面说明自己项目用了哪些技术,以及遇到的难点/亮点是什么,怎么解决的。表设计为什么怎么设计等待和项目相关的。然后通读几遍记在脑子里,这样面试这种项目的时候你就得心应手了。分库分表的话我觉得以一个大学毕业生的角度最少要知道有几种分库分表的方式,要答出来垂直/水平 分库分表的做法,以及分库分表之后会发生什么问题以及如何解决的?-跨库 join 的问题啊、数据存放在哪个分库、分表以及如何存放?读取时怎么从不同数据库读取?另外还要知道一下常规分库分表的中间件比如 mycat、sharding-jdbc 等等,大致了解一下,问到你怎么用的时候你就说以你目前的数据量暂时不需要进行分库分表,但是个人对这方面还比较感兴趣,了解了一下怎么分库分表,说一下垂直分库分表、水平分库分表,在讲一讲可能会遇到的数据问题。差不多这个问题你拿个 80 没问题。好了,偶然刷到,给你解解惑,希望你下次面试有好结果,也希望我有好结果。😁共勉。(来自 4年老鸟的)
8 1

相关推荐

08-16 22:28
门头沟学院 Java
put添加元素的流程1 首先会去借助哈希值计算桶索引的值,运算函数为(n-1)&hash值进行与计算。:计算哈希值,jdk7之前是直接引用哈希值计算,而jdk8开始则借助哈希扰动的算法,原理呢就是将原哈希值向右移动16位,异或运算哈希值,将高位哈希值与地位哈希值都可以很好的参与到计算当中,减少哈希冲突的概率2 判断该桶索引位置是否为空,如果为空直接进行存放Node节点。如果不为空,需要遍历链表或者红黑树,去判断是否存在相同的key,如果不同则插入,相同则覆盖。:8开始为尾插,8之前为头插(多线程扩容可能会导致链表出现死循环的问题)插入新节点后3对数组的元素进行计数,当数组当中的元素数量大于负载因子与容量的乘积时,会触发扩容机制,两倍的扩容速度,扩容过程当中存在对元素桶索引的重新分配问题:在jdk7之前会使用(2n-1)&hash重新算一遍桶索引的位置(n为原数组长度):但是在jdk8开始,将(2n-1)&hash进行拆分,拆成(n-1)&hash+n&hash=原索引位置+n&hash,在判断过程当中呢,实现对n&hash的计算即可,判断计算是否为零,为零则保留原索引,不为零则在原索引的基础之上加上旧数组长度,接着移动就简单了,将原先的链表拆分为两个临时链表,后续直接一次性挂载即可。4判断是否需要树化,先判断链表长度,在链表长度达到8的条件下,判断数组长度是否达到64,达到就将链表树化,没达到64就以2倍的速度进行扩容。
如果再来一次,你还会选择...
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务