1. 手撕算法
给你一个数组, 2 1 3 7 9 2,如果相邻两个数相加是10,那么两个数可以消掉。问最后还剩几个数?比如这个,3和7消掉,还剩2 1 9 2,1和9还可以再消一次,还剩2 2,最后答案就是2。(思路:栈。新元素和栈顶元素相加为10,就弹栈,否则进栈,输出栈的大小。)
2. 项目
●介绍水平分表过程、大表拆分的过程。
●Redis有没有可能丢数据?怎么解决?
●你还有什么其他的方式来保证Redis的可靠性?(主从复制、哨兵、集群一通甩出来)
●RabbitMQ如何保证消息不丢失?(没保证,再加强)
●RabbitMQ如何做削峰填谷?
3. 八股
●InnoDB中一个三层的B+树能存多少数据?
●MySQL的索引怎么存储的?每个索引一个B+树,还是多个索引放一个B+树?
●每个叶子节点能存放多少条数据?(虽然没问,但是差点问到,mark一下,回去复习)
●叶子节点中存的是什么数据?
●B+树的范围查找怎么做的?
●分库分表具体的分片策略是怎么做的?
●表存满了之后怎么扩表?
●id是怎么生成的?(分布式自增主键)
●有没有其他的分布式id生成算法?(雪花),具体怎么实现的?(我不清楚,了解而已)
●Redis保证incr命令原子性的原理是什么?(不清楚)
●Redis数据的可靠性怎么保证?(持久化)
●介绍AOF持久化的过程?
●AOF重写期间命令可能会写入两次,会造成什么影响?(忘记了)
●讲一下JVM的内存模型?
●new一个对象存放在哪里?(运行时数据区),局部变量存在JVM哪里(不知道)
●JVM垃圾回收机制?(没学到)
●Linux系统的8080端口有多少个TCP连接,怎么看?(不知道)
●如何看Linux进程或CPU使用情况?(top)
●Linux查看内存情况?(free -h)
●讲下TCP的TIME_WAIT(TCP最熟的地方忘记了,可惜)
●ConcurrentHashMap底层是怎么实现的?
●HashMap为什么不能保证线程安全?
●进程间通信的方式?
●共享内存的方式如何保证并发安全?(我的回答是加锁)
●这个锁具体怎么实现的?(比较抽象,我回答了如果是我,我会怎么设计)
4. 反问
●技术栈
●对于实习生如何培养
●GoLang在CSIG用来做什么?
●Base成都?
●作息?
●团建?旅游?
●实习生进来之后会做些什么?