快手客户端面经

一面(70min)——9.8

  • 基础知识(20min)
  1. JAVA并发、平时开发有遇到过的并发场景
  2. 设计模式(装饰模式、观察者模式)
  • 算法(40min)
  1. 三个线程交替打印1、2、3
  2. 输出某个数全排列的下一个数(如132,输出213)
  • 反问(10min)

二面(80min)——9.8

一、基础知识

1、JAVA并发、平时开发有遇到过的并发场景

2、有哪些排序?怎么选择应用场景?冒泡排序和插入排序你怎么选择?

  • Android知识
  1. APK瘦身
  • 算法

1、一个有序有重复数组,把每个重复的第一个值交换到前面,要求每个数的个数不变(如[1,1,2,2,3,4,4,4,5,5,6] -> [1,2,3,4,5,6,······])

2、链表中第k个最大的数(快排变型)

### 快手 Java 实习生试经验分享 #### 试流程概述 试过程被描述为一次非常积极的学习经历[^1]。整个过程中,试官采取了引导式的提问方法,帮助候选人思考并理解问题的本质。即使遇到困难的问题,也会通过提示来辅助解答,使得整个交流变得轻松而富有教育意义。 #### 技术考察重点 在技术方,对于Java开发者而言,深入理解和掌握JVM的工作原理至关重要[^2]。具体来说: - **引用类型及其作用** - 强引用(Strong Reference)是最常见的形式,在任何情况下都不会被回收。 - 软引用(Soft Reference)用于实现内存敏感的缓存机制;当内存不足时才可能被清除。 - 弱引用(Weak Reference)的对象只能存活到下一次GC之前。 - 虚引用(Phantom Reference)主要用于跟踪对象何时可以被垃圾收集器处理。 - **静态成员变量管理** 类加载期间完成`static`字段初始化工作,并将其存储于方法区中。每当创建新实例时并不会再次执行此操作,而是直接指向已存在的副本进行访问控制。 #### 编程能力测试样例 实际编程环节可能会涉及到算法设计题目,比如判断数组内是否存在重复元素且索引差不超过给定范围k的情况下的解决方案如下所示: ```java public boolean containsNearbyDuplicate(int[] nums, int k) { Map<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < nums.length; ++i){ if(map.containsKey(nums[i]) && i - map.get(nums[i]) <= k) return true; map.put(nums[i], i); } return false; } ``` 上述代码实现了对输入整数序列快速查找是否有符合条件的相邻重复项的功能[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值