阿里实习转正定级咨询

之前一直以为校招起步都是p5了,最近怎么还听说今年要p4起步,有知道的前辈说一下吗
全部评论

相关推荐

8.8面的, 阿里系果然会拷打很多spring八股1. 自我介绍2. 实习收获概述- 你提到在快手和字节的收获比较大,请分别讲一下你在这两段实习中做了什么,以及收获了什么?3. 字节项目 - 架构与技术细节- 字节项目的技术架构是怎样的?- 新架构和老架构有什么不同?是如何演进和迁移的?- [追问] 老架构为什么会存在“每次都需要代码开发”的问题?(探究其历史成因)- [追问] 新架构是如何做到“可配置化”的?(探究其核心实现原理)- 在这个项目中,你具体做了哪些工作?(明确个人贡献)- [追问] (针对你说的接入大模型)你是如何实现的?(考察具体实现方案,如抽象、路由等)4. 字节项目 - 业务流程理解- 你了解的“海外内容安全审核中台”,整个审核流程是怎样的?- 这个审核中台在业务链路中起到了什么作用?- 对于高时效性的审核需求(如“立马审核”),系统是如何实现的?5. Java中有哪些并发控制的方式?(要求比较全 synchronized reentrantlock readwritelock 无锁的原子类 基于aqs的juc工具)6.synchronized 和 ReentrantLock 的区别是什么7. Java中的异常处理机制是怎样的8. 些异常之间的类继承关系是怎样的?(Throwable体系)9. 你了解Java中的对象引用吗?(如:强、软、弱、虚引用)10. 这些不同类型的引用在GC(垃圾回收)时有什么区别?11. MySQL的数据隔离级别有几种?它们之间有什么区别12. 在实际业务中,一般会使用哪个隔离级别(这个我觉得其实有点意思,我记得之前看到并发场景很高的场景下会选择用RC而不是RR,我这里没有观察过)13. 每个隔离级别分别会存在什么问题?(如:脏读、不可重复读、幻读)14. 在Spring中,与事务相关的配置通常是什么?15. @Transactional注解中,通常会设置哪些属性16. 事务的传播机制有哪些?你常用的有哪几种17. 你了解Spring Bean的加载过程吗?18. Spring是如何解决循环依赖问题的19. 算法:找出一串字符串中所有的回文子串
发面经攒人品
点赞 评论 收藏
分享
import java.util.*;class Node {public Integer key;public Integer value;public Long timeStamp;public Node(Integer key, Integer value, Long timeStamp) {this.key = key;this.value = value;this.timeStamp = timeStamp;}}class LRUCache {private Map<Integer, Node> map;private int capacity;public LRUCache(int capacity) {map = new LinkedHashMap<>();this.capacity = capacity;}public int get(int key) {Node node = map.get(key);// key 不存在if (node == null) {return -1;}// key 过期(懒删除策略)if (isExpire(node)) {map.remove(key);return -1;}map.remove(key);map.put(key, node);return node.value;}public void put(int key, int value, Long timeStamp) {Node node = map.get(key);if (node == null) {  // key 不存在node = new Node(key, value, timeStamp);if (map.size() < capacity) {  // 有额外空间map.put(key, node);} else {  // 没有额外空间// 先尝试移除过期keyremoveExpireNodes();// 如果空间还是不足,移除最老的keyif (map.size() >= capacity) {map.remove(map.keySet().iterator().next());}map.put(key, node);}} else {  // key 存在map.remove(key);node = new Node(key, value, timeStamp);map.put(key, node);}}private void removeExpireNodes() {for (Node node : map.values()) {if (isExpire(node)) {map.remove(node.key);}}}private boolean isExpire(Node node) {if (node.timeStamp == null) {  // 没有时间戳表示永久不过期return false;}return System.currentTimeMillis() > node.timeStamp;}}class LRUTTL {public static void main(String[] args) {LRUCache cache = new LRUCache(2);cache.put(1, 10, null);cache.put(2, 20, null);System.out.println(cache.get(1));  // 10cache.put(3, 30, null);System.out.println(cache.get(2));  // -1cache.put(4, 40, System.currentTimeMillis() + 1000);try {System.out.println(cache.get(1));  // -1Thread.sleep(1500);System.out.println(cache.get(3));  // 30System.out.println(cache.get(4));  // -1} catch (InterruptedException e) {throw new RuntimeException(e);}}}优化点:可以维护一个map结构存储<最小过期时间,节点数量>来判断当前LinkedList中是否存在已经过期的node,可以一定程度地减少 removeExpireNodes 的调用次数
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务