美团一面 大三实习 算法题没做出来 呜呜~~
3月24号的面试,刚面完就开始复盘了,可能要寄了。项目有两个,第一个是学校的一个大作业,简单说就是一个Spring Boot的curd项目,没什么可说的。第二个是一个基于JAVA的RPC框架,用zookeeper实现的注册中心,protobuf实现的序列化。总之就是两个项目都没什么亮点。😭😭😭😭😭
下面是八股文:
1.为什么选用zookeeper做注册中心?
答:因为dubbo用了zookeeper,相比于Redis可能更加稳定,并且有心跳检测和服务器下线检测机制。
2.zookeeper宕机了对客户端有什么影响?
答:客户端会缓存从注册中心得到的服务器端IP地址,所以即使zookeeper宕机,客户端依然能工作。
3.客户端负载均衡策略为什么用随机法?
答:不知道,瞎说的大数定律,说数量足够大的话,就足够平均。😂
4.序列化为什么用protobuf?
答:因为protobuf采用TLV格式序列化,所以对数据压缩更有优势。
5.GET和POST有什么区别?
答:GET参数在url头,对外界可见。而POST参数在body中,对外界不可见。
6.TCP如何保证可靠数据传输?
答:序列号,ACK,快速重传,拥塞控制,流量控制,三次握手,四次挥手。
7.AIO,BIO,NIO能说一下吗?
答:AIO是异步IO,NIO是非阻塞同步IO,BIO是阻塞同步IO。其它的不知道了。😂
8.浏览器输入一个url地址的过程?
答:DNS,TCP,客户端发送HTTP请求,服务器端处理并返回HTTP数据报,客户端根据HTTP数据报渲染页面。
9.volatile有什么作用?
答:保证可见性,禁止指令重排。
10.线程池的参数能说一下吗?有哪些拒绝策略?
答:核心线程数,最大线程数,keepalivetime, timeunit, 线程工厂,拒绝策略,阻塞队列;
丢弃任务抛出异常;丢弃任务不抛出异常;丢弃最前端的任务;由调用线程去处理任务;
11.JVM加载class文件的过程?细嗦
答: 加载:加载类的二进制数据
验证:确定加载的类正确与否
准备:为变量赋值
解析:把符号引用转为直接引用
初始化
使用
卸载
12.怎么判断JVM的垃圾回收对象?为什么要有两种?他们之间的区别?可达性分析法的GCRoot可以有什么?
答:可达性分析法和引用计数法;因为根据使用情况不同而需要不同的方法;说了他们的定义;GCRoot之前看过,但没记住,就说不会了。😂
13.老年代垃圾回收算法?弊端?老年代会产生很多内存碎片吗?
答:垃圾清除***产生内存碎片;这个不知道,就说了老年代大对象比较多,所以不会有很多的内存碎片。
14.什么情况下会出现OutOfMemory?
答:不太知道,说了分配大对象的时候。
15.设计模式了解吗?能说几个吗?
答:工厂模式,单例模式,装饰器模式
16.双重校验锁的限制条件?
答:说了volatile关键字,防止指令重排。面试官好像不太满意,问还有吗?不知道了😂
下面就不都给出我的回答了,太累了😂
17.SpringBoot和Spring有什么区别?细嗦
18.Spring的核心技术?IOC和AOP
19.用new不行吗,为什么要IOC?
20.AOP如何实现的?答了动态代理
21.用过Redis吗?什么情况下需要用Redis?它相比于Mysql的好处?(没用过😭)
22.了解消息队列吗?(没有😭)
23.Linux命令打开一个文件?说了cat,vim,gedit但面试官说好像还有
23.Linux查看所有进程命令?ps -ef
24.git切换分支?checkout -b
25.Mysql索引结构?B+树和哈希索引
26.为什么不用B树?
27.为什么情况会遇到索引失效?(不会😭)
28.红黑树的规则?(说了三条,其它的不会了)
29.红黑树怎么保证平衡?(不会)
30.跳表了解吗?(不了解)
31.字典数了解吗?(不了解)
32.快排的思想
算法题:力扣34(中等),在排序数组中查询元素的第一个和最后一个位置,时间复杂度(logn)
写的二分查找,但最后一个测试用例就是不过,哎😔、
问了我平时有刷题的习惯吗?刷了多少道题?
答:有,力扣150道(可能是因为感觉我做题不太行吧,笔试做了2.18道题,面试算法题又没做出来😭)
反问:对我有什么建议吗?
答:实践能力有待提升,项目太单薄,布拉布拉的
总结:感觉美团的题还是挺常规的,奈何我不会的东西太多了😂,应该再多背背面经的。本来以为简历上没有的东西就不会问了,没想到还是逃不过去,呜呜~~。
上面都是我当时的回答,写出来是为了请牛油们补充更正的,还请DL们多多指正,感激不尽