?在21年上半年,大学比我小三届的师弟跟我说,他裸辞了,他说不甘心就在外包呆着,身边的朋友都一个个的进了理想的公司。但自己还在外包呆着他不甘心,也怪自己大学的时候还不够努力(其实挺聪明的),被女朋友哄得团团转(恋爱脑),现在终于悟了。直接裸辞,向自己的目标“字节跳动”进发。
这次面试字节跳动他也是做了很多的准备,还好顺利拿到了offer,特地来告诉我。分享一下这次的4面技术面真题,以及一份字节2-2师兄整理的排序和数据结构刷题手册,希望能够给一些正在面试字节或计划面试大厂的朋友提供帮助。
字节跳动技术一面
讲一下线程参数的含义 Innodb的索引实现 为什么是B+树? Redis的使用,分布式锁的实现 操作系统虚拟内存换页的过程 TCP三次握手 volatile关键字的作用 乐观锁、悲观锁 之前用过哪些设计模式? 算法题:滑动窗口
字节跳动技术二面
说一下B树和B+树的区别 说一下HashMap的实现,扩容机制,扩容时如何保证可操作? Redis扩容机制(渐进式单线程扩容) Spring IoC的原理,如何实现,如何解决循环依赖? 两线程对变量i进行加1操作,结果如何?为什么?怎么解决? CAS概念、原子类实现原理 synchronize底层实现,如何实现Lock? AQS有什么特点? 手写项目中某个模块代码。 介绍各种网络协议。 DNS在网络层用哪个协议,为什么。 介绍HTTPS协议,详述SSL建立连接过程。 代码题:反转单链表。 代码题:复杂链表复制。
字节跳动技术三面
算法题多到爆炸,感觉是算法专场,宇宙条果真名不虚传 说一下Java垃圾回收机制 64匹马,8个赛道,找最快的4匹马 给出两个升序数组A、B和长度m、n,求第k个大的 给出数组A,长度为n,数组中元素的值位于[0, n - 1]之间,求是否有重复元素 讲一下多线程与多进程区别 JVM中什么时候会进行垃圾回收?什么样的对象是可以回收的? Spring主要思想是什么?
字节跳动技术四面
场景题目:设计一个短域名服务:短信存不了太长网站,需要弄成短域名,你该如何设计一个服务,可以为全国的网址服务。 TCP为什么是三次握手四次挥手? 数据库的隔离级别 sql题,写了个连表查询外加模糊查询 算法:镜像二叉树 ......
自字节内部的《排序和数据结构刷题手册》部分内容展示
冒泡排序
冒泡排序(Bubble Sort,台湾译为:泡沫排序或?泡排序)是?种简单的排序算法。它重复地?访过要排序的数列,?次?较两个元素,如果他们的顺序错误就把他们交换过来。?访数列的?作是重复地进?直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越?的元素会经由交换慢慢“浮”到数列的顶端,故名。
选择排序
选择排序(Selection sort)是?种简单直观的排序算法。它的?作原理是每?次从待排序的数据元素中选出最?(或最?)的?个元素,存放在序列的起始(末尾)位置,直到全部待排序的数据元素排完。选择排序是不稳定的排序?法(?如序列[5, 5, 3]第?次就将第?个[5]与[3]交换,导致第?个5挪动到第?个5后?)。
?
快速排序
?快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过?趟排序将要排序的数据分割成独?的两部分,其中?部分的所有数据都?另外?部分的所有数据都要?,然后再按此?法对这两部分数据分别进?快速排序,整个排序过程可以递归进?,以此达到整个数据变成有序序列。
?
?归并排序
归并排序(MERGE-SORT)是建?在归并操作上的?种有效的排序算法,该算法是采?分治法(Divide and Conquer)的?个?常典型的应?。将已有序的?序列合并,得到完全有序的序列;即先使每个?序列有序,再使?序列段间有序。若将两个有序表合并成?个有序表,称为?路归并。
?
?希尔排序
?希尔排序(Shell's Sort)是插?排序的?种?称“缩?增量排序”(Diminishing Increment Sort),是直接插?排序算法的?种更?效的改进版本。希尔排序是?稳定排序算法。该?法因D.L.Shell于1959年提出?得名。
堆排序
堆排序(Heapsort)是指利?堆积树(堆)这种数据结构所设计的?种排序算法,它是选择排序的?种。可以利?数组的特点快速定位指定索引的元素。堆分为?根堆和?根堆,是完全?叉树。
|