最新字节跳动面试题与答案

1.算法题一:无序数组的中位数 (快排思想O(N) 时间复杂度)

package com.lightsword.leetcodeproblemsimport org.junit.jupiter.api.Test
import java.util.*/*** 1.算法题一:无序数组的中位数 (快排思想O(N) 时间复杂度)* 中位数定义: 如果数组长度是奇数,最中间就是位置为(n+1)/2的那个元素。如果是偶数,就是位置为n/2和位置为n/2+1的两个元素的和除以2的结果.* 例如,
[2,3,4] 的中位数是 3
[2,3] 的中位数是 (2 + 3) / 2 = 2.5*/
class ArrayMidNum {@Testfun main() {val m1 = median(intArrayOf(2, 3, 4))val m2 = median(intArrayOf(2, 3))println("m1=$m1")println("m2=$m2")//m1=3.0//m2=2.5}fun median(array: IntArray): Double {val N = array.sizeval heapSize = N / 2 + 1// PriorityQueue通过二叉小顶堆实现,可以用一棵完全二叉树表示(任意一个非叶子节点的权值,都不大于其左右子节点的权值),// 也就意味着可以通过数组来作为PriorityQueue的底层实现。// 首先将数组的前(n+1)/2个元素建立一个最小堆。val heap = PriorityQueue<Int>(heapSize)for (i in 0..heapSize - 1) {heap.add(array[i])}// 然后,对于下一个元素 array[i] ,和堆顶的元素 heap.peek() 比较,如果 array[i] <= heap.peek() ,丢弃之,接着看下一个元素。// 如果 array[i] > heap.peek()  ,则用该元素取代堆顶,再调整堆,接着看下一个元素。重复这个步骤,直到数组为空。for (i in heapSize..N - 1) {if (array[i] > heap.peek()) {heap.poll()heap.add(array[i])}}// 当数组都遍历完了,那么,堆顶的元素即是中位数。// 如果数组长度是奇数,最中间就是位置为(n+1)/2的那个元素。如果是偶数,就是位置为n/2 和位置为 n/2+1 的两个元素的和除以2的结果if (N % 2 == 1) {return (heap.peek()).toDouble()} else {// poll()方法获取并删除队首元素val a = heap.poll()val b = heap.peek()return (a + b) / 2.0}// 可以看出,长度为(n+1)/2的最小堆是解决方案的精华之处。}}

2.算法题二:给一数组,让你找一对满足:i<j && a[i]<a[j] (O(N)时间复杂度0(1)空间复杂度)

3.算法题三: 给一数组,让你找一对满足:i<j<k && a[i]<a[j]<a[k] (O(N)时间复杂度 O(N)空间复杂度)

4.三次握手过程

5.为什么是3次,而不是2次或4次?

6.介绍下TCP

7.TCP是如何确保传输安全的?

8.TCP和UDP的区别

9.介绍下hashmap

10.数据库有了解吗,介绍下数据库的索引以及作用

11.数据库的存储引擎,介绍一下,以及其数据结构

12.数据库的事务

13.事务的特点

14.同步和互斥,锁

15.DNS 域名系统

16.HTTP和HTTPS的区别

17.HTTPS的SSL(TLS)协议

18.进程和线程的区别

19.进程通信方式

20.介绍共享内存通信方式

21.线程的通信方式

22.synchronized和volatile介绍

23.synchronized和volatile的区别和应用

24.说下java的GC算法

25.影响一个Http服务最大连接数的因素是什么

26.一台服务器如何辨认一个请求是谁发送的

27.如何进行Token认证

28.说一下cookie,为什么要有cookie,cookie中放什么,cookie与session的区别

29.Https是什么,建立连接的过程

30.算法题:给出一个n*n数字矩阵,寻找一条最长上升路径(数字越来越大),每个位置只能向上下左右四个位置移动

31.智力题:2n个人围成一圈,两两握手,形成n条线段,线段没有交点。 一共多少种握手方式?

32.说说你所知道的Java中线程安全的集合类

33.Java中有什么办法使对象在各线程中隔离

34.说一下ThreadLocal是什么,如何实现的

35.Redis为什么速度快,多路复用讲一下

36.项目中为什么用ES,ES在超大数据量下如何优化

37.操作系统的分页存储,地址转换

38.概率题:两人抛硬币,抛到正面的人获胜,问先抛的人获胜的概率

39.算法题:给定一个非空二叉树,返回其最大路径和。

40.项目流程,亮点

41.令牌桶算法怎么实现的

42.线程池是自己创建的吗?

43.线程池七大参数都是什么?

44.各个参数都是怎样设置的?

45.线程池核心线程数和最大线程数为什么要设置成这样?

46.线程状态?怎样转换的?

47.object类的方法有哪些?

48.实现线程同步的方式有哪些?

49.synchronized和reentrantlock的区别

50.MYSQL事务隔离级别及产生的问题

51.数据库的死锁问题

52.MySQL索引为什么用b+树?

53.7层网络模型

54.tcp和udp的区别

55.常用的Linux命令

56.算法题:反转链表第m到第n个节点

57.面向对象和面向过程

58.继承多态封装及其体现

59.算法题:去除有序数组中元素重复出现两次以上的数字并返回数组长度

60.代理模式 spring aop

61.模板方法模式

62.线程池池化技术

63.何时创建核心线程,何时创建最大线程

64.线程池拒绝策略

65.jmm

66.jvm内存区域

67.垃圾回收算法

68.Java异常体系

69.有没有自定义过异常

70.项目中的数据库表有哪些映射关系(一对一,一对多,多对多)

71.算法题:字符串数组的最长公共前缀

总结

所有的面试题目都不是一成不变的,特别是像字节跳动这种大厂,上面的面试真题只是给大家一个借鉴作用,最主要的是给自己增加知识的储备,有备无患。

上面这些面试题总结一下,主要就是这6类:

(1)多线程、集合和Java基础

(2)spring框架、mybatis框架

(3)MySQL数据库

(4)高并发、分布式

(5)JVM调优、缓存优化、数据库调优

(6)算法

关于字节跳动岗位层级,绩效考核晋升

职级研发序列

不少人对字节跳动技术岗的体系结构和技术要求设置不太清楚,想去面试心里没底,下面简单介绍一下字节跳动技术岗要求体系,并给大家分享一份最新入职字节跳动的同事总结出的完整面试题!

字节跳动的职级研发序列一共5级,各细分2级,共10 级:

1-1
1-2
2-1
2-2
3-1
3-2
4-1
4-2
5-1
5-2

不同序列间月薪base差异较大,技术base整体偏高。比如2-1月薪会在20k+,2-2的package会在60w-100w左右(算上期权,大概会占30%左右)。T2-2级别的薪资约40k,500股票/每年。

字节跳动对技术岗的要求

1、3年以上开发经验;

2、精通Java,理解io、泛型、多线程、集合等Java基础使用和实现原理;

3、熟悉Spring、SpringBoot等框架,理解JVM的实现机制及性能调优;

4、掌握MySQL使用,熟悉数据库性能优化;

5、熟悉主流Key-Value存储系统,能够进行系统性能调优;

6、掌握Linux 操作系统;熟练使用一种脚本语言,Shell或Python;

7、拥有高并发、分布式系统经验优先;

8、有业务系统中台化经验者优先。

有以下经验者优先:

① 熟练掌握Golang/Python并能灵活运用;

② 具有大规模分布式系统的调优经验,如JVM调优、SQL调优、缓存优化、RPC优化等;

③ 熟悉大规模分布式系统架构设计,熟悉CAP、Quorum、Consistent Hashing等原理和算法。

绩效考核与晋升

字节跳动内部的绩效考核一共有八级,从低到高为F、I、M-、M、M+、E、E+、O,并会进行强制分布,对应年终奖和月薪百分比的涨薪。M就有涨薪机会。晋升面试也是主要还是看绩效考核。

每年两次考核,一般在三月和九月。考核方式借鉴了google的OKR+360模式:头条是双月OKR,可以在lark 上看到所有人的OKR,知道大家在做什么,你对齐的大目标是什么,支持对齐你的人在做什么。

360评估:每个人都可以评估别人同样也会被别人评估,无论是领导还是普通员工。


http://www.taodudu.cc/news/show-5567655.html

相关文章:

  • URL输入到页面加载解析发生了什么?
  • 计算机网络(1)——应用层(概述到DNS)
  • 01.Android崩溃Crash封装库
  • 【Pingtunnel工具教程】利用ICMP隧道技术进行ICMP封装穿透防火墙
  • kubernetes网络:service,插件,策略,dns优化
  • ps4命运2老是断开服务器无响应,《命运2》进不去是什么原因 进不去原因介绍
  • 跳槽带走100多核心骨干,导致盛大文学衰落的他,这次又“叛逃”腾讯!
  • 《铁甲雄兵》小技巧介绍 梅花游戏视频网
  • 从5大头号黑客的“黑转白”历史,悟出的一套黑客修炼之道
  • Isla Obscura 深海生物系列 NFT 上架市场平台
  • 我们雇佣了一只大猴子…
  • php图片编辑,PHP将图片处理成圆角
  • Nginx利用lua剪辑FastDFS图片
  • @二等功免试生,免试读研申报流程来啦
  • 转载:年底的履�表 by 蔡学镛
  • Airpods序列号怎么看 Airpods查看方法
  • 小米手机使用应用沙盒动态修改序列号参数
  • 小米新款打开高通Diagnostics端口提取的基带qcn文件改串号
  • 小米面试问题解答
  • 小米一面
  • Unity—小米VR开发——颇繁琐的开发步骤探索
  • 小米安卓面经
  • l1l1llll1 php,齐博CMS splitword.php后门解密
  • 机器人军团防护罩_4399《机器人攻城战》,保家卫国的使命
  • 英国武装部队启动首个专用网络军团
  • 星际战争(bzoj 3993)
  • 【BZOJ3993】[SDOI2015]星际战争 二分+最大流
  • bzoj 3993 星际战争 - 二分答案 - 最大流
  • 透过华为军团看科技之变(四):互动媒体(音乐)
  • bzoj 3993 星际战争

最新字节跳动面试题与答案: 无序数组的中位数 (快排思想O(N) 时间复杂度)相关推荐

  1. 最新字节跳动面试题与岗位层级,绩效考核制度介绍

    最新字节跳动面试题与岗位层级,绩效考核制度介绍 1.算法题一:无序数组的中位数 (快排思想O(N) 时间复杂度) 2.算法题二:给一数组,让你找一对满足i 3.算法题三: 给一数组,让你找一对满足i& ...

  2. 2019最新整理JAVA面试题附答案

    2019最新整理JAVA面试题附答案 包含的模块: 本文分为十九个模块,分别是:Java 基础.容器.多线程.反射.对象拷贝.Java Web .异常.网络.设计模式.Spring/Spring MV ...

  3. 字节跳动java笔试题目_牛客网--字节跳动面试题--特征提取

    牛客网--字节跳动面试题--特征提取 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 来源 链接:特征提取 来源:牛客网 题目 ...

  4. 高级php程序员面试题2019,2019最新PHP模拟面试题及答案

    原标题:2019最新PHP模拟面试题及答案 PHP模拟面试题汇总如下: 1.如何防止form表单重复提交? 2.Cookie被禁用了session还可以使用吗? 3.你了解的或者用过的版本控制工具有哪 ...

  5. 编程实践系列: 字节跳动面试题

    字节跳动面试题 面试3轮技术面+1轮HR 整体分三大块: 项目经验 计算机基础 编程题(每轮一题) 项目经验 架构+业务 做了什么核心设计优化 解决了什么难题 体现思考 业务理解 架构设计能力 项目需 ...

  6. 牛客网--字节跳动面试题--雀魂启动

    牛客网--字节跳动面试题--雀魂启动 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 来源 链接:雀魂启动 来源:牛客网 题目 ...

  7. 2020最新整理PHP面试题附答案

    2019最新整理PHP面试题附答案 1.什么事面向对象?主要特征是什么? 面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰.主要特征:封装.继承.多态. 2.SESSION 与 ...

  8. 2018 java 字节跳动笔试题

    想进字节跳动同学注意了,这里是修真院面试笔记整理,那么这里就给大家分享一下 [2018 java 字节跳动笔试题] 一面 实现算法:求全排列. 输入:一个整数n 输出:从1至n所有数字组成的全排列 简 ...

  9. 有苦有乐的算法 --- 一个无序数组,如果从小到大排好序,任何一个元素任何一个元素移动索引长度不超过k,实现排序

    题目 一个无序数组,如果从小到大排好序,任何一个元素任何一个元素移动索引长度不超过k,实现从小到大排序 例: k=2 排序后,[4]移动2个索引,[6]移动2个索引,[1]移动2个索引,[3]移动2个 ...

最新文章

  1. wind mysql日志_Windows下的Mysql日志操作
  2. docker $PWD路径_使用docker炼丹
  3. UVA 10404 - Bachet's Game
  4. click Documenting Scripts
  5. Vue实现可折叠导航菜单~非常详细
  6. 使用OData快速构建REST服务
  7. 软件测试基础—易用性测试
  8. 按键精灵_汉字转拼音
  9. 怎样在计算机上注册dll文件,注册dll文件【搞定步骤】
  10. 鸿蒙2.0公测版支持机型,华为鸿蒙2.0露真容,公测版支持机型公布
  11. php js轮播图片代码,js图片轮播手动切换效果实例代码
  12. 辞退了一位简历造假的程序员,简历美化可以,造假不可取!
  13. Android Webview 设置Cookie问题
  14. 基于FCM算法的聚类算法
  15. JAVA----JSON序列化错误:InvalidDefinitionException: No serializer found for class org.apache.ibatis.execut
  16. 手机下拉框是怎么做出来
  17. 6羽的调侃并不彻底的激怒武青云
  18. 关于服务器登录用户信息查看的若干命令
  19. Centos7下areaDetector IOC的编译后记
  20. Linux杀掉挖矿病毒(qW3xT.2)

热门文章

  1. matlab 传输速率,大量数据爆发,Xilinx FPGA怎么提高数据传输速率?
  2. java异步编程的 7 种方式
  3. 使用mac笔记本基础技巧
  4. 主题模型(3)——PLSA模型及其EM算法求解
  5. 如何记住使用Google Assistant停在哪里
  6. JavaSE高级:JVM重点内容探究
  7. log4j:踩坑记录:log4j2异步日志无法打印%L %M等位置信息
  8. ESP32CAM实现手机app实时监控
  9. 拥有记忆的可变形材料,正在让AI七十二变|AI的朋友一
  10. 快速幂计算 (简单计算器)