我经历的字节跳动后台开发实习二面,面试官说叫我补补操作系统和算法

因为热爱所以坚持,因为热爱所以等待。熬过漫长无戏可演的日子,终于换来了人生的春天,共勉!!!

在一面过了9天之后开始了,二面,这一次不同,是一个看起来就,嗯,看起来就觉得肯定很强的人,开始先是问我可以实习多久,以及未来的打算,自己是如何规划的,然后开始问问题了

知识技能

1. 说说MySQL的隔离级别

2. 举个实例说一下读已提交是什么?

3. MySQL如何解决幻读问题的?

4. 说说你对SQL优化的理解

5. 什么情况下索引会失效?

6. Explain结果中type有哪些?

7. type中eq_ref 与 ref 的区别?

8. 说一下redo log 与 undo log是什么? 

9. Redis五种数据类型的底层数据结构是什么?

10. Redis的持久化机制

11. Redis的过期删除策略

12. 说说Linux内核态与用户态

13. 进程的通信方式有哪些

面试官:好的,接下来写两个算法题

算法题

14.剑指 Offer II 038. 每日温度

就是剑指offer的题目,我之前还做过一遍,可以因为面试的时候情绪稍显紧张,于是和面试官交流了几次才确实思路,一开始我说用队列,然后面试官说用队列要考虑出队入队顺序,再想想;然后我说是双指针,面试官笑了笑,你想太复杂了,这题目没这么难的,最后又思考了一下,是单调栈(妈呀我以前做过这题),然后面试官叫我讲一下所有数字出入栈的顺序,讲完之后面试官叫我写一下代码,写完之后又叫我写用例测试一下,跑的时候又出了些小问题,倒腾了几次可算跑出来了,然后面试官说今天面试就到这里,回去再好好写一下这个题目

 代码:

class Solution {
    public int[] dailyTemperatures(int[] temperatures) {
        if (temperatures == null || temperatures.length == 0) return new int[0];
        int[] result = new int[temperatures.length];
        Stack<Integer> stack = new Stack<>();
        for (int i = 0; i < temperatures.length; i++) {
            while (!stack.isEmpty() && temperatures[i] > temperatures[stack.peek()]) {
                int index = stack.pop();
                result[index] = i - index;
            }
            stack.push(i);
            
        }
        return result;
    }
}

反问

15. 如何培养实习生,实习生需要做什么,实习生能做哪些事,可以获得怎样的锻炼与成长?

16. 你对我提一些建议,哪里可以做得更好,哪些地方需要改进?

面试官:加强知识深度,像Redis底层,Linux底层,好好补一下cs基础课程的知识,还有多写一些高难度的算法题

这场面试总共下来一个小时零一分,因为温度那个算法题和面试官交流思路花了比较多时间,不知道后面题目是不是因为时间原因没了,然后就给我砍了,整体下来又吸收了一波经验,还是很有收获的,接下来得好好看看操作系统的知识了,给自己加个油!!!

 

猜你喜欢

转载自blog.csdn.net/qq_43295483/article/details/120486305