携程Java实习(二面)

大概问的问题:

  • 一些Java基础问题
  • GC ,分代管理,优势
  • 排序算法的一些问题,稳定是什么意思
  • 用过哪些设计模式
  • 单例代码实现
  • 算法题:(挺简单的算法题)
    • 十进制转八进制
    • 反转链表
    • 树的最大深度

面试官问我final 关键字的四个使用场景和语义,其中我说了final有内存屏障。
根据《Java并发编程的艺术》书上说描述的:

final域重排序规则
final域是基础数据类型:
在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。
初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。
Final域是引用数据类型:
在构造函数内对一个final引用的对象的成员域的写入,与随后在构造函数外把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。

谢谢Tandejian评论区补充:
X86处理器确实对final不会插入任何内存屏障,但是其他处理器可能,估计面试官默认是x86吧。


最后总结,虽然final有内存屏障的语义,但是X86处理器上并没有相应的实现,是我回答有些问题。抱歉,收回之前的吐槽,携程是上海互联网扛把子,里面各个都是人才,说话又好听。

觉得不错就点个赞。

#携程春招##携程##实习##面经##Java#
全部评论
请问你是啥时一面的呀?
点赞 回复
分享
发布于 2020-05-21 22:10
X86处理器确实对final不会插入任何内存屏障,但是其他处理器可能,估计面试官默认是x86吧。
点赞 回复
分享
发布于 2020-05-22 09:40
联易融
校招火热招聘中
官网直投
问过项目了吗?没项目基础学得好行不行?
点赞 回复
分享
发布于 2020-06-10 19:41

相关推荐

部门介绍自我介绍短连接是你自己的项目吗?(回答做了一点优化,详细说了一下)说一下布隆过滤器为什么你项目说布隆过滤器比分布式锁好,怎么比较的先更数据库再删缓存怎么保证一致性(我提了一嘴会有短暂不一致)短暂不一致怎么办(不会)如果删除缓存的过程中出现问题怎么办(我提到用canal读binlog到消息队列)如果缓存是新的,消息队列的数据是旧的怎么办(寄,只说了个乐观锁,不知道怎么实现)分表怎么考虑的数据量怎么考虑的,做测试的时候数据库表里有多少数据(偷懒没做,牛友们别学我)redis怎么保证数据不丢失aof、rdb写时复制会阻塞吗rdb不就是个快照吗,数据修不修改跟它有啥关系(这个没太理解,面试官让我再看看)bigKey了解吗,会有什么问题Innodb和MylSAM的区别三层的B+树存储的数量级是多少普通索引的过程联合索引是一棵树吗你项目上的消息队列幂等怎么做的手撕:1、冒泡排序和优化(优化面试官觉得不行)2、一个n+1长度的数组,范围1-n,只有一个重复2次,说解题思路(Hash,循环、环形链表、相加再减、异或位运算都说了,实在想不出来了)反问:大概什么时候出结果(一周)腾讯云主要什么语言(python和go,java很少)腾讯现在hc多吗(不清楚,他们面的话就有)总结:问了面腾讯云的同学面经,一直在看计网和操作系统,mysql和redis快忘光了,秋招再战
点赞 评论 收藏
转发
6 10 评论
分享
牛客网
牛客企业服务