快手一面面经
快手一面
自我介绍
谈谈对微服务架构的理解
服务注册配置用的什么
服务注册为什么用的Ncos去做,为什么不用其他的做
springboot和springcloud的区别关系(答的太范了)
synchronized与ReentrantLock的区别 (没答好,范)
synchronized锁的升级过程
垃圾回收算法
CMS垃圾回收器
concurrenthashmap怎么实现线程安全的
MySQL的数据结构
聚主索引与非聚主索引的区别
说说ACID
算法题
行星相撞,用[-3,4,5,2,-3,2,5,-7,3,-9,3,-12,9]代表行星,正号代表向右走,负号代表向左走,他们的速度都相同,他们都开始走,相撞的时候,大的与小的相撞,小的破碎,相同大小相撞都破碎,最后剩下那些行星
例如[-3,4,5,2,-3,2,5,-7,3,-9,3,-12,9]
结果[-3,-7,-9,-12,9]
//一面快手算法题 public class kuaishou { //Leetcode原题 // 735\. 行星碰撞 //用栈来解决 class Solution { public int[] asteroidCollision(int[] asteroids) { LinkedList linkedList = new LinkedList(); for (int asteroid : asteroids) { if (linkedList.size() == 0) { linkedList.add(asteroid); } else { if (asteroid < 0) { //只有i这个新的行星是向左移动,top的行星是向右移动的才会发生碰撞 while (linkedList.size() > 0 && linkedList.peekLast() > 0) { //需要判断碰撞的情况,有三种 //第一种i比top的大,top出栈,i继续撞,但是如果栈里面没有行星了就跳出循环 if (-asteroid > linkedList.peekLast()) { linkedList.removeLast(); } else { //第二种i和top一样大,i出栈,top也不入栈,出循环 //第三种,i比top小 break; } } //判断跳出循环的原因 if (linkedList.size() == 0 || linkedList.peekLast() < 0) { linkedList.add(asteroid); } else if (linkedList.peekLast() == -asteroid) { linkedList.removeLast(); } } else { linkedList.add(asteroid); } } } int[] ints = new int[linkedList.size()]; for (int i = 0; i < ints.length; i++) { ints[i] = linkedList.get(i); } return ints; } }#快手春招##实习##面经##春招##Java#