19年Java岗面试分享:升级打怪连跳三家公司 最终斩获心动offer(16)

  • 点了点头 , 说下Dubbo的原理?(说了服务注册与发布以及消费者调用的过程)踩过什么坑没有?(说了dubbo异常处理的和打印accesslog的问题)

  • CAS了解么?(说了CAS的实现)还了解其他同步机制么?(说了synchronize以及两者的区别 , 一个乐观锁 , 一个悲观锁)

  • 那我们做一道题吧 , 数组A , 2*n个元素 , n个奇数、n个偶数 , 设计一个算法 , 使得数组奇数下标位置放置的都是奇数 , 偶数下标位置放置的都是偶数

  • 先说下你的思路(从0下标开始遍历 , 如果是奇数下标判断该元素是否奇数 , 是则跳过 , 否则从该位置寻找下一个奇数)

  • 下一个奇数?怎么找?(有点懵逼 , 思考中 。 。 )

  • 有思路么?(仍然是先遍历一次数组 , 并对下标进行判断 , 如果下标属性和该位置元素不匹配从当前下标的下一个遍历数组元素 , 然后替换)

  • 你这样时间复杂度有点高 , 如果要求O(N)要怎么做(思考一会 , 答道“定义两个指针 , 分别从下标0和1开始遍历 , 遇见奇数位是是偶数和偶数位是奇数就停下 , 交换内容”)

    推荐阅读