电话面试,晚了一小会,然后开始了一个小时的面试。简述项目
项目中遇到了什么问题(技术方面,遇到了哪些技术难题),怎么解决的。
balabala一顿狂讲,讲的很细,具体到如何实现
项目中遇到了什么问题(团队协调方面,跟客户交流方面,业务方面)
我说了一个关于数据库版本初始化的,也balabala
项目承担了哪些,跟客户方面有没有 负责过什么?
我说设计了延迟推单等等balabala
关于我爱我家项目,如何改进。加大数据量,Redis应该如何处理。
Redis有哪些过期策略,你怎么使用的。
Redis都做过什么,用过哪些结构(我只用过k-v)
Redis服务器宕机了,重启后数据可能会丢失等等,如何解决。
Redis什么key的排序什么东西
问了好几个关于Redis的问题,记不清楚了,提出了更改需求我要怎么设计。
提出数据量加大,当前业务场景如何存储,因为我之前是扫描整个Redis。然后面试官引导我说将时间戳作为key。
然后我说按照时间戳做key,订单号作为value,然后分级扫描。优先扫描高等级工人等等。
项目:
JAVA相关
简述Spring思想,IOC,AOP。
JAVA动态代理和静态代理都是如何实现的。
自己在哪里用过什么设计模式。
说了单例,装饰,工厂。简述这些设计模式代码怎么实现。问了单例模式具体实现,我说了static内部类。
然后又问我能不能等调用的时候在创建这个对象。我说能,将了一下代码实现。
然后问如果多线程情况下,调用的时候创建会有问题,问我怎么解决。我说了双重检查锁。把对象前加voliatile,然后创建对象的时候加synchronized锁。
voliatile关键字,简述。
voliatile关键字如何防止指令重排,指令重排怎么回事。
对JVM编译有多少了解,具体讲如何编译什么的。回答的不好,不太懂。
简述JVM里面的东西。讲JVM里面都有什么栈。
简述垃圾回收机制。4种GC算法。具体到每个地方的GC。比如年老代,年轻代。年轻代里面的三个区域等等。
JVM如何判断是否回收该对象。引用计数法和可达性分析法(四种引用,JVM优先清理可达强度低的对象,引用链,根集的等等的描述)
JVM内存结构。
Linux问我了解到什么程度,我说只是能部署JAVA开发环境,安装软件等,还问了一些什么内核,还有什么方法啥的。我一窍不通所以都没答上。
计算机网络:
三次握手,四次挥手。特别详细讲,还讲比如为什么不能两次握手等。
简述TIME_WAIT
TIME_WAIT的时间是多少
滑动窗口。
ARP协议
还问了一点操作系统的,进程线程什么的
数据结构:
数据结构-树,都了解什么树。(我只了解到二分搜索树。。。)
链表如何去查重。我说了一个简单算法,然后我详细的说了链表如何删除节点。
如何判断链表是循环链表。
Ps:HashMap竟然没问。。。意料之外
数据库:
Mysql存储引擎有没有了解,简单讲一下
简单说一下索引应用。
问的好像是聚簇索引什么的记不清了,没回答上
B+树索引相关。
数据库索引生效失效问题,比如取 >,<(大于小于) 什么的会不会失效,Like会不会失效。AB索引,搜索A索引生效吗,搜索B索引生效吗。
其他:
学习方法。问我平时学东西都如何学习,有没有自己的一套方法。
平时都读了什么书籍,有没有浏览技术博客。