秋招面经-阿里智能信息-研发工程师JAVA
一面:
1、自我介绍
2、对于未来工作的 base 地是怎么考虑的?
3、谈谈项目 1 做了什么事,自己负责了什么工作(5 min)
4、手撕做题:一个字符串 s 和一个整数 k,找出 s 中的最长子串,要求该子串中的每一个字符出现次数都不少于 k,返回这个子串的长度。比如 s = "ababbc", k = 2,则输出结果为 5。因为最长子串为 "ababb",其中 a 出现 2 次,b 出现 3 次,均不少于 k
5、谈谈当前写法的时间复杂度是多少?
6、思考一下基于滑动窗口能否实现?代码怎么写?
7、手撕做题:写一个线程安全的单例模式
8、谈谈饿汉式单例和懒汉式单例的区别、饿汉式为什么是线程安全的、懒汉式单例为什么要有双重检查的写法
9、volatile 关键字的作用是什么?
10、谈谈 synchronized 关键字的机制
11、还了解 Java 的哪些锁?
12、Java 创建线程有哪些方式?
13、线程池的参数具体有哪些?
14、线程池的消费策略是怎样的?
15、假设有 5 台机器,每台配置:1 CPU,512 M 内存,1 T 硬盘,1 GB 网卡。如何设计一个高效稳定的系统,从 100 亿个数中选出最大的 1000 个
16、算法层面可以采用负载均衡、数据分块并结合堆来实现,那么如何从工程的角度来保证这个系统的稳定性?
17、一个机器处理某个数据块时宕机了,如何不让其从头开始处理数据,而是找到上一次处理数据的位置继续处理?怎么做持久化?怎么做数据恢复?怎么实现数据处理进度的标记?
#发面经攒人品#