12月22, 2020

【转载面经】-阿里影业四面、美团二面

阿里影业-四面挂

一面

时间:2020/11/25 20:00 37分钟

1、你在项目中遇到过的最难的问题是什么,如何解决的

根据自己实际情况作答

2、JAVA8有哪些新特性,说一下你了解的

1)、 lambda表达式
 (2)、 去永久代,变为元空间
 (3)、Optional 类 − Optional 类已经成为 Java 8 类库的一部分,用来解决空指针异常。
 (4)、Stream API −新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中。
 (5)、Date Time API − 加强对日期与时间的处理。

3、设置元空间大小的参数知道吗,什么情况下会发生元空间的GC 参考:Metaspace元空间

-XX:MetaspaceSize=N 
这个参数是初始化的Metaspace大小,该值越大触发Metaspace GC的时机就越晚。随着GC的到来,虚拟机会根据实际情况调控Metaspace的大小,可能增加上限也可能降低。在默认情况下,这个值大小根据不同的平台在12M到20M浮动。使用java -XX:+PrintFlagsInitial命令查看本机的初始化参数,-XX:Metaspacesize为21810376B(大约20.8M)。

-XX:MaxMetaspaceSize=N 
这个参数用于限制Metaspace增长的上限,防止因为某些情况导致Metaspace无限的使用本地内存,影响到其他程序。在本机上该参数的默认值为4294967295B(大约4096MB)。

-XX:MinMetaspaceFreeRatio=N 
当进行过Metaspace GC之后,会计算当前Metaspace的空闲空间比,如果空闲比小于这个参数,那么虚拟机将增长Metaspace的大小。在本机该参数的默认值为40,也就是40%。设置该参数可以控制Metaspace的增长的速度,太小的值会导致Metaspace增长的缓慢,Metaspace的使用逐渐趋于饱和,可能会影响之后类的加载。而太大的值会导致Metaspace增长的过快,浪费内存。

-XX:MaxMetasaceFreeRatio=N 
当进行过Metaspace GC之后, 会计算当前Metaspace的空闲空间比,如果空闲比大于这个参数,那么虚拟机会释放Metaspace的部分空间。在本机该参数的默认值为70,也就是70%。

-XX:MaxMetaspaceExpansion=N 
Metaspace增长时的最大幅度。在本机上该参数的默认值为5452592B(大约为5MB)。

-XX:MinMetaspaceExpansion=N 
Metaspace增长时的最小幅度。在本机上该参数的默认值为340784B(大约330KB为)。

4、lamda表达式和内部类有什么区别,lambda表达式是怎么去调用的有了解过吗

参考:Lambda表达式与匿名内部类的区别

1、所需类型不同。匿名内部类:可以是接口、抽象类、具体类。Lambda表达式:只能是接口

2、使用限制不同。如果接口中有且仅有一个抽象方法,可以使用Lambda表达式,也可以使用匿名内部类。 如果接口中多于一个抽象方法,只能使用匿名内部类,而不能使用Lambda表达式 

3、实现原理不同。匿名内部类虽然跟使用Lambda效果一样,但是会自动多生成一个.class字节码文件,只是我们在写的时候没有发觉,这也是匿名内部类跟Lambda的区别,Lambda的字节码文件会动态生成,我们看不见,这个知道即可,在具体编程中感受不到,对于初学者或一般开发作业中不必过多关注。

5、CopyOnWriteArrayList有用过吗, 说一下你的使用场景,什么原理

参考 :https://www.jianshu.com/p/d1502f193e41

6、JAVA8 HashMap在链表大于多少的情况下会转化红黑树,什么是红黑树,为什么采用红黑树,说一下你的理解

参考:http://blog.keepting.cn/post/java_map_hashmap.html

7、ThreadLocal有用过吗,说一下底层怎么实现的(提到弱引用,被问到四种引用级别)

参考:ThreadLocal原理及注意点

8、Linux命令熟悉吗, 如何统计nginx日志文件中请求次数最多的前十个IP;如何统计两个文本文件中都出现的单词

参考:强软弱虚---强引用、软引用、弱引用、虚引用

9、你平时是怎么去建Mysql索引的,什么情况下会用到覆盖索引,什么是回表

参考:【Mysql知识汇总】之常用索引及sql优化

10、CAP原则和BASE理论理解吗

作为了解吧:分布式基础之CAP和BASE理论

二面

时间:2020/11/30 10:00 45分钟

1、你在项目中遇到最难的点是什么

2、你们项目的并发现在是多少,设计并发是多少,如何保证能达到设计并发

3、https加密解密过程大致说一下

参考:HTTPS加解密原理

4、一次http请求的完整过程

参考:一次完整的http请求过程

5、tcp三次握手是什么,为什么非要三次握手

参考:tcp建立连接为什么需要三次握手

6、你们项目中主要用了spring cloud alibaba哪些组件,sentinel主要是做什么的

1、Nacos (配置中心与服务注册与发现)
Nacos实现了服务的配置中心与服务注册发现的功能,Nacos可以通过可视化的配置降低相关的学习与维护成本,实现动态的配置管理与分环境的配置中心控制。同时Nacos提供了基于http/RCP的服务注册与发现功能。

2、Sentinel (分布式流控)
Sentinel是面向分布式微服务架构的轻量级高可用的流控组件,以流量作为切入点,从流量控制,熔断降级,系统负载保护等维度帮助用户保证服务的稳定性。常用于实现限流、熔断降级等策略。

3、RocketMQ (消息队列)
RocketMQ基于Java的高性能、高吞吐量的消息队列,在SpringCloud Alibaba生态用于实现消息驱动的业务开发,常见的消息队列有Kafka、RocketMQ、RabbitMQ等,相关的比较文档可以自行去翻阅。

4、Seata  (分布式事物)
既然是微服务的产品,那么肯定会用到分布式事物。Seata就是阿里巴巴开源的一个高性能分布式事物的解决方案。

5、Dubbo   (RPC)
Dubbo已经在圈内很火了,SpringCloud Alibaba基于上面提到的Nacos服务注册中心也同样整合了Dubbo。

7、sentinel限流降级配置是怎么下发的有了解过吗,说一下sentinel集群限流是怎样去实现的

8、sentinel限流有哪些算法,大致说一下,接口限流底层是怎么去实现的

9、zookeeper选举过程说一下吧,zookeeper基于什么协议去做选举

10、什么是fullgc, 线上fullgc频繁怎么排查解决

11、HashMap是线程安全的吗,那要线程安全用什么Map

12、ConcurrentHashMap put过程,ConcurrentHashMap有没有可能产生死锁

13、Linux Load Average有了解过吗,主要跟那些指标有关

三面

时间:2020/12/1 20:00 47分钟

1、你在工作中遇到最大的挑战是什么

2、你觉得你从毕业到现在最大的收获是什么

3、你平时是怎样去做索引优化的,基于什么背景

4、为什么linux操作系统从从磁盘读取数据的单位大小是4k(只答到是安装操作系统时指定的)

5、B+树的结构,主键索引非叶子节点存储的是什么,叶子节点存储的是什么

6、你在项目中有线程间通讯的场景吗, 线程间的通信方式有哪几种(说了wait、notify、LockSupport的park、unpark、ReentrantLock的Condition, 答非所问)

7、在项目中你主要负责那一块儿,大致描述一下

8、你有什么特别熟悉的中间件吗(说了zookeeper、redis、RocketMQ),挑一个你最熟悉的说一下(说了redis zset跳跃表),有去了解redis底层源码吗(没有),你为什么要去了解这些,了解这些对你工作有什么帮助吗

9、你平常是怎么去学习的(博客、视频课程、书籍)

10、你还有什么想问的吗

  • (1) 你对我有什么看法吗 (回复:这个不方便透露)
  • (2) 阿里内部技术分享是什么样一种状态(回复:。。。)
  • (3) 你能给我一些建议吗 (回复:打好基础,进入一家大厂,因为大厂才能有更广阔的场景,对自身实力的提升会有很大的帮助)

四面

时间:2020/12/5 10:00 时间:37分钟

1、数组和链表有什么区别,什么时候适合用数组,什么时候适合用链表

2、常见的排序算法有哪些

3、递归有了解吗,如何求N的阶层(凌晨到北京,只睡了三个小时不到,加刚到北方有点不适应,脑子发热说成f(n) * f(n - 1)了)、

4、如何遍历链表,如何删除链表节点(大致说了一下,面试官好像没明白我的意思,有点儿难受,想手写被阻止了)

5、你目前工作中经历的最难的一点是什么

6、你对你未来有什么规划吗

7、如果你进入阿里,未来短期的具体目标简单说一下吧(感觉自己回答的不太好,有点儿紧张)

10、在北京,最多能够待上几年(5年)

11、你还有什么想问的吗(随便问了一下面试官对我的看法,他说很佩服我想要跳出舒适圈的勇气,。。。[ps:到这里我感觉自己应该挂了,但还是耐心的听完了 今天就到这里了],回去等通知吧。)


美团-二面挂

一面

1、查找链表倒数第k个节点(牛客网面试现场写)

2、项目中难点

3、平常是怎么做MySQL索引优化

4、统计APP日活场景,怎么做

5、HashMap put过程

6、redis的基本数据结构有哪些,你们平常在哪些场景用redis(说了缓存、List消息队列、Hash、PubSub)

7、消息中间件如何保证消息可靠性

8、什么是聚簇索引和非聚簇索引,什么是回表,什么是索引覆盖

9、什么是联合索引,索引最左匹配原理,什么情况下会导致索引失效

10、Spring如何解决循环依赖

二面

1、你的消息推送组件项目,里面用了redis,主要用来干什么(1、登录状态,2、PubSub消息转发)

2、zookeeper ZAB协议有了解吗?(不了解)

3、Raft协议是怎么回事儿

4、搭建zookeeper集群需要注意什么(1、节点数最好奇数个;2、开放集群内部通信端口)

5、为什么zookeeper集群最好奇数个

6、MySQL索引最左前缀原理,ABC联合索引,条件是AC会走索引吗

7、MySQL一次SQL执行的过程大致说一下

8、什么是BIO,NIO,AIO

9、Linux的IO模型大致有几种,能简单说一下吗?

10、信号驱动式IO能具体说一下吗

11、线程池的参数有哪些,说一下吧

12、线程池提交任务的流程

13、Netty如何解决粘包

14、Dubbo一次服务调用过程

15、如何统计订单量前十的店铺(redis的zset,用订单量做score, rangebyscore前十)

16、如果有两个线程池,一个线程池任务很多,另一个线程池任务比较少,如何将忙的那个线程池的任务分配一部分到空闲的那一个线程池(没答上)

17、如何控制一个线程池里面的任务不能超过三分钟,超过三分钟自动丢弃(没答上)

18、如何让线程池中的任务根据会员等级有优先级顺序(可以使用PriorityBlockingQueue去做阻塞队列按照会员等级进行compare)

19、数据库隔离级别,什么是脏读,什么是幻读

本文链接:http://blog.keepting.cn/blog//post/mianshi_ali_01.html

-- EOF --

Comments