字节广告业务后端一面
前两天面的,忘了写了
这次面试给我道心面崩了,超多问题不会,最后手撕请求换了两次题目
1. 先是简单自我介绍
2. 聊项目。问了一些业务场景,比如服务崩了,其中还没落库的数据怎么办等等。
3. 问了一些八股,比如 volatile 关键字,Spring 依赖注入,为什么是四次挥手等
4. 最后手撕第一道,多线程打印 ABC,没写过这种的,请求换题
5. 第二道,swap(Integer a, Integer b) 实现这个方法,以前写交换都是用数组来实现,不会写。回头查了查面试官可能是想让用反射来写?
6. 最后给了一道算法题,一道力扣 hard
7. 反问,技术栈?Java#牛客创作赏金赛##牛客AI配图神器#
这次面试给我道心面崩了,超多问题不会,最后手撕请求换了两次题目
1. 先是简单自我介绍
2. 聊项目。问了一些业务场景,比如服务崩了,其中还没落库的数据怎么办等等。
3. 问了一些八股,比如 volatile 关键字,Spring 依赖注入,为什么是四次挥手等
4. 最后手撕第一道,多线程打印 ABC,没写过这种的,请求换题
5. 第二道,swap(Integer a, Integer b) 实现这个方法,以前写交换都是用数组来实现,不会写。回头查了查面试官可能是想让用反射来写?
6. 最后给了一道算法题,一道力扣 hard
7. 反问,技术栈?Java#牛客创作赏金赛##牛客AI配图神器#
全部评论
这个交换还挺难啊,要是在Integer缓存范围内,直接修改反射修改,会把缓存池中的Integer值都改了,要new Integer对象来改。参考代码: public static void swap(Integer a,Integer b) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{
Field declaredField = Integer.class.getDeclaredField("value");
declaredField.setAccessible(true);
/**
* 错误写法
* int bVal=b.intValue();
* System.out.println("bVal:"+bTemp); // 2
* System.out.println("bVal->Integer->int:"+Integer.valueOf(bTemp).intValue()); // 1
* declaredField.set(a, bTemp); // bTemp装箱,取到缓存池中值为1的Integer(2)对象。a:1
*/
Integer bTemp=new Integer(b.intValue());
declaredField.set(b, a.intValue());
System.out.println("bVal:"+bTemp);
System.out.println("bVal->Integer->int:"+Integer.valueOf(bTemp).intValue());
declaredField.set(a, bTemp);
}
佬,力扣是哪道题呀,还有这个swap函数具体是啥意思呀,交换不就是定一个tmp变量吗
AtomicReference都不能用吗
相关推荐

点赞 评论 收藏
分享