update: 01/19 HR 说通过了
一面
介绍项目
java 锁有哪些
- 具体的实现是什么
java 单例模式有哪些
饿汉
懒汉
DCL 及可能存在的问题
用 volatile
java 反射,你用过哪些方法
计网三挥四握
操作系统 进程 + 线程区别
下面是true or false, 为什么 : 原因是 类加载机制 + 反射
ListString> a = new ArrayList(); List<Integer> b = new ArrayList(); System.out.println(a.getClass() == b.getClass()); ???
顺便问了我反射如何拿泛形
算法题:
检测环 +
LRU
树从根到叶子节点的遍历
二面
聊项目,聊经历
操作系统: ctrl + c 底层发生了什么
计网:幂等性 及网站应用
开放题目:我有十台机器,如何实现负载均衡
讲了两个思路,一个是 一台作为主机
一个是 使用用户 UUID 散列到不同主机
Java 设计模式
动态代理如何实现:,有哪些应用
Proxy + InvocationHandler
智力题:一个硬币,正反面出现次数不确定,如何生成公平事件
解决:抛两次就行
算法题
股票买卖 k = 1
股票买卖 k = 无穷
直接秒了,这个太熟悉了
自己之前在 B 站讲解股票买卖系列6道题,光录视频就有三四次,所以这个题目算是我全程给面试官讲题
边讲边写代码, 算是小秀了一下
三面
上来就是个人介绍加项目介绍
然后全程三道题
第一题是remove item from list
第二题是双指针去除重复元素,leetcode 80
第三题是变形
给数组 , 比如 【 String[] strs = {"123","A","A","er","A"};】
写 O(n) 算法, 变成 A A A 123 er,我用了双指针
最后面试官要求进一步优化,要求交换次数最少,下面是我的解法
public static void getRes(String[] nums, String target){ int len = nums.length; int left = len - 1, right = len - 1; //int index = len - 1; while(right >= 0){ while(right >= 0 && !nums[right].equals(target)) right--; if(right < 0) break; //right point to A left = right; while(left >= 0 && nums[left].equals(target)) left--; if(left < 0) break; String temp = nums[left]; nums[left] = nums[right]; nums[right] = temp; right = right - 1; } for(int i = 0; i < nums.length; i++) System.out.print(nums[i] + " "); //代码实际输出: A A A 123 er } public static void main(String[] args) { String[] strs = {"123","A","A","er","A"}; getRes(strs, "A"); }
发帖子攒个人品
如果有算法的问题,可以看看我的B站, 我总结了有200+ 力扣 剑指题目的解法,每个视频的时间不长 3-8分钟
所有常见题型的 综合讲解,通俗易懂
https://space.bilibili.com/479038960
全部评论
(14) 回帖