神策数据-java后端 武汉 8.29 二面凉经
面试官,ming字结尾,具体名字我就不说了
没有自我介绍
面试官:是否有优化,简单说一下思路哈,不需要你实现
(思考了下)采用计数加上双指针
面试官:怎么样的一个思路,不要大概
没有自我介绍
上来一题:
/** * @return int * @Author Lei * @Description * 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 * 示例 1: * 输入: s = "aabcbcbb" * 输出: 3 * 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 * 示例 2: * 输入: s = "bbbbb" * 输出: 1 * 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 * 示例 3: * 输入: s = "pwwkewfp" * 输出: 5 * 解释: 因为无重复字符的最长子串是 "kewfp",所以其长度为 5。 * 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。 * 示例 4: * 输入: s = "" * 输出: 0 * @Date 19:48 2022/8/29 * @Param [str] **/第一想法暴力搜,代码已写
面试官:是否有优化,简单说一下思路哈,不需要你实现
(思考了下)采用计数加上双指针
面试官:怎么样的一个思路,不要大概
下面是我给面试官讲解的大概的思路的代码:
public static int getMaxLen1(String str) { if ("".equals(str)) { return 0; } HashMap<Character, Integer> map = new HashMap<>(); for (int i = 0; i < str.length(); i++) { map.put(str.charAt(i), map.getOrDefault(str.charAt(i), 0) + 1); } int left = 0, right = str.length() - 1; while (map.get(str.charAt(left)) != 1 && map.get(str.charAt(right)) != 1) { while (map.get(str.charAt(left)) != 1) { map.put(str.charAt(left), map.get(str.charAt(left)) - 1); left++; } while (map.get(str.charAt(right)) != 1) { map.put(str.charAt(right), map.get(str.charAt(right)) - 1); right--; } } return right - left + 1; }我也不是很确定,所以没有太肯定这个就是优化算法,但是讲解的时候演示正确了。
然后再来讲解一些面试的简单题目:
1:项目当中优化到5秒是怎么实现的,redis(是我太菜了没有明白面试官想要问什么,在哪里解释了半天,面试官说:你还是没有正面回答我的问题)
2:虚拟内存是干啥的?1:提供超过自身物理内存访问范围的访问地址范围,2:对于不同的程序,都有自己的访问地址空间,互不干扰,面试官:不是很满意
3:多线程访问会出现什么问题,怎么解决?多线程访问共享变量的时候会出现线程安全性问题,一般是使用加锁,或者是使用信号量的同步机制来进行解决。
2:虚拟内存是干啥的?1:提供超过自身物理内存访问范围的访问地址范围,2:对于不同的程序,都有自己的访问地址空间,互不干扰,面试官:不是很满意
3:多线程访问会出现什么问题,怎么解决?多线程访问共享变量的时候会出现线程安全性问题,一般是使用加锁,或者是使用信号量的同步机制来进行解决。
4:那你知道像这种遇到多线程访问共享变量的场景是否可以检测到?Java工具包好像可以提供死锁的线程分析(dump线程),像这种访问冲突的场景我不是很清楚
5:一致性hash是什么,不是很清楚
5:一致性hash是什么,不是很清楚
面试官:我没有什么问题了,你还有什么问题么?
反问:
1:部门情况:和一面情况一样都是不是很清楚,校招不代表之后的部门
2:自己的表现:面试官自己都笑了好多秒,我也尬笑了,感觉无了
面试感受:自己太菜,快准备!!!
#神策数据校招后端面经##23届秋招笔面经#2:自己的表现:面试官自己都笑了好多秒,我也尬笑了,感觉无了
面试感受:自己太菜,快准备!!!