字节杭州飞书三面凉经

字节杭州飞书三面凉经

一面(45min)

1、哪个项目挑战更大一点?
2、为什么用Docker?
3、Docker部署用的网络配置?
4、数据库也放在Docker中吗?mysql进程放在宿主机和Docker中区别,优缺点
5、模块的划分,一个模块是一个进程还是多个进程?
6、Docker之间的通信?
7、Nginx怎么做的负载均衡?(√)
8、Java里面synchronized锁的底层实现原理?(√)
9、介绍一下悲观锁、乐观锁、自旋锁,适用场景?(√)
10、一个JVM进程的内存布局空间?(√)
11、函数返回的时候,return语句的执行过程?(x)
12、MVCC的机制?(√)
13、MVCC怎么解决幻读问题的?(√)
14、临键锁的范围是怎么确定的?(?)
15、说一下ReadView?(举了一个例子,我理解的是问这个,√)

算法:找第K大的数。(x,用小顶堆就行)

二面(57min)

1、进程虚拟地址空间如何映射到物理内存?(√)
2、页表的工作机制?缺页异常怎么处理?(√)
3、操作系统对当前内存页进行更新?内存页面置换算法(√)
4、进程在执行过程中有哪些状态,怎么相互转换的?(√)
5、父进程结束的时候如何确保子进程的资源被回收?(√)
6、HTTPS如何确保数据传输过程中数据的安全?(√)
7、HTTP协议的方法,你怎么理解幂等性?(√)
8、Java多线程?找了一段代码,问执行结果(x)

算法
1、剑指 Offer 12. 矩阵中的路径(√)
2、剑指 Offer 10- II. 青蛙跳台阶问题(√)

三面(57min)

1、实习情况
2、项目情况
3、502的错误一般是什么原因导致的?怎么排查
4、504错误什么原因?503呢?
5、Nginx的网络IO模型?有个专有名词(??)
6、有遇到过Mysql查询慢的情况吗?怎么排查
7、explain的字段?
8、发生外排序(filesort)的根本原因?
9、用过Redis吗?
10、TCP如何最大化利用现有网络带宽?

算法:

给一个局部有序的数组 [6,7,8,9,10,1,2,3,4,5],再给一个数字,给出下标,不存在返回-1。要求时间复杂度logN以下。

(我觉得有点像【剑指 Offer 11. 旋转数组的最小数字】,希望大佬指出问题,或者给出正确的解法)

public class Solution {
    int find(int[] nums, int k) {
        int left = 0;
        int right = nums.length - 1;
        // 二分查找,只剩下两个数字,就不继续找了
        while (right - left > 1) {
            int mid = left + (right - left) / 2;
            if (k == nums[mid]) {
                return mid;
            } else if (k > nums[mid]) {
                // k大于中间数字,k在右边
                left = mid + 1;
            } else if (k < nums[mid]) {
                // k大于中间数字,不好判断,所以right--
                if (k == nums[right]) {
                    return right;
                }
                right--;
            }
        }
        if (k == nums[left]) {
            return left;
        }
        if (k == nums[right]) {
            return right;
        }
        return -1;
    }
}

更新

经过大佬提醒,三面算法题目为LC33,其实也不难。二分查找的思路基本是对的,但是面试写的确实有问题。

public class Solution1 {
    public int search(int[] nums, int target) {
        int n = nums.length;
        if (n == 0) {
            return -1;
        }
        if (n == 1) {
            return nums[0] == target ? 0 : -1;
        }
        // 因为是旋转排序数组,且元素互不相同,前后元素是可以接起来的
        // 所以,隐含的条件是 num[n-1]<num[0]
        // 那就以nums[0]为分界
        int left = 0;
        int right = n - 1;
        // 二分查找,搜索区间为[left,right]
        while (left <= right) {
            int mid = left + (right - left) / 2;
            // 找到了
            if (nums[mid] == target) {
                return mid;
            }
            if (nums[0] <= nums[mid]) {
                // 说明左边是连续递增的,没有突变
                // 这个时候如果target在[nums[left],nums[mid])区间,就搜索前半段,否则后半段
                if (nums[left] <= target && target < nums[mid]) {
                    right = mid - 1;
                } else {
                    left = mid + 1;
                }
            } else {
                // 突变位于左边,所以,右边是连续递增
                // 这个时候如果target在(nums[mid],nums[right]],就搜索后半段,否则前半段
                if (nums[mid] < target && target <= nums[right]) {
                    left = mid + 1;
                } else {
                    right = mid - 1;
                }
            }
        }
        return -1;
    }
}
#面经##字节跳动#
全部评论
字节技术实习一般是3面吗?第三题应该是二分,我记得lc有原题
1 回复 分享
发布于 2022-03-04 20:29
这不是回答的挺好的嘛,怎么可能凉了
1 回复 分享
发布于 2022-03-03 19:58
应该是LC33吧 二分
1 回复 分享
发布于 2022-03-02 20:36
老哥,考虑下飞书客户端吗,求求了,安卓
点赞 回复 分享
发布于 2022-05-12 20:54
“return语句的执行流程”是想问什么呀?和finally的顺序嘛?
点赞 回复 分享
发布于 2022-03-15 12:50
多路服用吧😂😂
点赞 回复 分享
发布于 2022-03-08 23:12
同学有兴趣来阿里淘系吗
点赞 回复 分享
发布于 2022-03-04 19:51
飞书啥部门?
点赞 回复 分享
发布于 2022-03-04 15:53
TCP如何最大化利用现有网络带宽?
点赞 回复 分享
发布于 2022-03-03 20:21
有重复元素 class Solution { public:     bool search(vector<int>& nums, int target) {         int i = 0,j = nums.size();         while(i < j){             const int mid = i + ((j - i)>>1);             if(nums[mid] == target) return true;             else if(nums[i] < nums[mid]){                 if(nums[i] <= target && target < nums[mid]) j = mid;                 else i = mid + 1;             }             else if(nums[i] > nums[mid]){                 if(nums[mid] < target && target <= nums[j - 1] ) i = mid + 1;                 else j = mid;             }             else i++;         }         return false;     } };
点赞 回复 分享
发布于 2022-03-03 16:09
算法不对 class Solution { public:     int search(vector<int>& nums, int target) {         int i = 0, j = nums.size();         while(i < j){             int mid = i + ((j -i)>>1);             if(nums[mid] == target) return mid;             if(nums[i] <= nums[mid]){                 if(nums[i] <= target && target < nums[mid]) j = mid;                 else i = mid + 1;             }             else{                 if(nums[mid] < target && target <= nums[j - 1]) i = mid + 1;                 else j = mid ;             }         }         return -1;     } };
点赞 回复 分享
发布于 2022-03-03 16:09
楼主是实习还是校招?
点赞 回复 分享
发布于 2022-03-03 10:16
Nginx的网络IO模型应该是说 epoll 吧
点赞 回复 分享
发布于 2022-03-03 08:50
凉是因为算法没ac吗?还是因为没hc了
点赞 回复 分享
发布于 2022-03-02 22:08

相关推荐

虚闻松声:简历看起来很清爽。几点建议。 1. 总结提炼项目工作内容。如第一个项目第一点,研发用户信息管理、购票功能:(然后具体展开)。还可以继续总结,如基础功能开发、算法优化座位分配、并发性能提升等等 2. 优化技术栈描述。全文多次出现Spring Boot,我感觉一次就够了。可以不写或者写整个体技术架构? 3. 增加业务指标描述。最好有一些业务效果的指标。或者优化的效果指标等等。
点赞 评论 收藏
分享
评论
19
175
分享

创作者周榜

更多
牛客网
牛客企业服务