java面试——2021校招字节跳动后台面经

HashMapConcurrentHashMap 的区别?(不会,当时太菜了)

线程池(当时就说了怎么用,连底层结构都答不上来,太丢人了)

数据库的锁(不会)

数据库的三范式(不会,还瞎扯了一堆)

线程和进程的区别

缓存(简单说了下浏览器缓存的作用)

算法题目1:随机链表复制(秒了)

给定一个链表,节点数据结构如下,除了包含一个next指针,还包含一个rand指针,随机指向链表的某一元素,或者为空指针,实现一个函数,深复制这个链表,要求空间复杂度O(1)

算法题目2:滑动窗口算法(卡了蛮久)

给定m个不重复的字符[a,b,c,d], 以及一个长度为n的字符串tbcacbdata, 问能否在这个字符串中找到应该长度为m的连续子串,使得这个子串刚好由上面m个字符组成,顺序无所谓,返回任意满足条件的一个子串的起始位置,未找到返回-1。比如上面的这个例子,acbd,返回3。要求优化到O(N)

期间问了项目的问题:缓存一致性问题、MySQL乐观锁;问之前实习的一些问题,在实习的时候学到了什么。

Redis 的过期策略、缓存雪崩、惰性删除

MySQL索引、b+树,为什么不用哈希map来存储?

最左前缀原则  (A,B,C)的联合索引,去查 B = 0 和 C = 0,还会使用索引吗?

不会走索引,因为在数据库中的遵从的是最左前缀的原则。

SQL,求第二大的薪水

 select salary from emloyee order by salary desc limit 2;

 select max(Salary) as SecondHighestSalary  from Employee where Salary<(select max(Salary) from Employee);

1.使用子查询和限定条件

select (

          select DISTINCT  Salary   //去重

           from Employee 

           ORDER BY Salary DESC       //降序排列

         limit 1 offset 1  //从第一条数据读取(offset 1 ,但不包括第一条),往后读取一条数据(limit 1 ),即第二条;

) as SecondHightestSalary;

给定一个排序链表,删除所有重复的元素只留下原链表中没有重复的元素。

 

怼项目(质疑我的缓存一致性操作,然后我口嗨用消息队列解决并发问题)

手写单例模式-懒汉模式

JAVA的锁、乐观锁悲观锁(视频卡出翔,面试官基本听不到我说啥,然后说我们来先做题吧)

编程题1:最大岛问题(我想了个分治,思路不对,直接爆炸,面试官还是不错的,给我换了道题)

编程题2:股票利润1(还要求写测试用例,要求跑通)

编程题3:股票利润2(可以买卖多次)(这两题都秒了,面试前一晚正好想刷一刷dp的题,就刷了这两题,所以说大家想到什么一定要去学!!!)

TCP的四次挥手

HTTPS

分代回收在整个GC中处于什么位置?

自我介绍、怼项目、Redis缓存

LRU在操作系统怎么实现?

HashMap扩容底层实现

Git 底层实现;如何解决冲突?

设计题:关注系统怎么设计?

              可以关注、取关别人

             可以查看关注、粉丝列表

             可以查看关注、粉丝数

快速判断两个人的关系

如果有大V(粉丝数很多),你的系统有没有问题?或者说如果觉得没问题,为什么没问题?(存储上,使用上)

编程题1:股票利润1

编程题2:股票利润3(可以买卖两次)(查了下,就是股票利润3,hard)

最近有看什么书?接下来什么打算?

先自我介绍一下。

讲一下websocket?和http有什么区别?

讲到了建立连接,说说TCP三次握手。

第三次握手失败会怎样?

为什么需要三次?两次可以吗?

提到了SYN洪泛攻击,讲一下

了解HTTP/2.0吗?

了解HTTPS吗?

讲一下nginx

谈到了跨域,讲一下跨域

谈到了CORS,我们一般怎么解决?

nginx在项目中怎样部署负载均衡呢?

32机器,2亿个整数中找不重复数字?

快速排序的原理、时间复杂度、空间复杂度

一个进程中,多个线程会共享哪些资源?

       A. 栈 B. 数据段 C. 寄存器 D.线程ID

多线程中以下哪些操作需要同步操作?(说白了就是哪些操作不具备原子性)

        A. x=y B. x++ C.x=x+1 D. x=1

如何轻量级实现进程间通信?(答了信号量,讲了下实现)

中断了解吗?CPU在中断时会干嘛?

动态链接和静态链接的比较(给了几个选项,不太记得了,很简单的)

设计题:设计高效的数据结构来实现下面的两个方法

解释下这两个方法,ADD来加入一个事件,RUN来执行事件,有点像缓存这些事件,到点了把执行完的事件删除。

问输入www.qq.com然后按下回车,浏览器作为客户端会发生什么?

浏览器的DNS缓存 -> 操作系统的DNS缓存 -> host文件 -> 本地DNS解析服务器,TCP三次握手 -> http传输数据 -> html文件、css文件渲染

第二次输入www.qq.com,和第一次有什么不同?

DNS缓存、http/1.0下长链接复用、静态文件缓存、携带cookie

四次挥手(从状态到报文控制标志位去讲具体流程)

为什么要四次、2MSL的作用

用过什么抓包软件?(wireshark、fiddle)

脑筋急转弯:1到10层电梯,每层电梯门口有1颗钻石,从1楼坐电梯到10楼,只能拿一次,怎么拿才能拿到最大的钻石?(我放弃治疗,想不出来。)

项目上线了吗?讲项目上线后遇到过什么BUG

问实习经历

TCP和UDP的区别?

UDP不可靠的话,为什么可以用来发送文件?

TCP怎么做流量控制?

发送窗口、接收窗口、拥塞窗口三者的关系

拥塞窗口的变化规律

HTTPS的S是什么意思?

HTTPS的作用是什么?

为什么要用fiddler?

fiddler能看到HTTPS中的内容吗?

什么是时间换空间?有例子吗?

你觉得跟身边的同学比起来你的优点是什么?

有没有解决过复杂的问题?

什么是乐观锁?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章