字节跳动视频架构(一面面经)

字节跳动视频架构(一面面经)

  • 算法:判断是否有环
  • java基础
    • String StringBuilder StringBuffer
    • hashmap
  • jvm,多线程
    • jvm各个部分介绍
    • threadlocal
    • 各个引用过程(强软弱虚)
    • 乐观锁/悲观锁/锁升级
  • 操作系统
    • 进程 线程 协程
    • 进程通信
  • 项目
  • 计算机网络
    • http报文结构
    • http常用方法
    • http各类返回码
    • https介绍+用https输入url啥过程
    • tcp和udp
    • tcp堵塞机制
  • 动态调用和静态调用
  • 安卓
  • 前端
  • 自我小结

算法:判断是否有环

leetcode141
面试开始先做一道题,很简单

java基础

String StringBuilder StringBuffer

String 安全 不可更改
StringBuffer 直接在字符串上更改,线程安全
StringBuilder 直接在字符串上更改,线程不安全
(ps:今天新面试一个公司问了String底层原理,及问什么不能更改,所以String应该深入了解一下深入理解Java中的String(大坑))

hashmap

介绍hashmap,hashmap3种解决冲突的方式,这里只答出来链表散列,还有开放定址法(线性探测再散列,平方探测再散列),在hash法。
这里我只说了线性探测,集体其他方法没说清,同样今天面试问到了hashmap存入元素的底层原理,所以hashmap处理冲突及过程要了解~

jvm,多线程

jvm各个部分介绍

我忘记怎么就到了jvm的内容,开始介绍jvm内存结构

threadlocal

面试官问如何在线程共享部分存储自己线程的私有信息,开始没想到threadlocal,提醒之后想到了
threadlocal底层threadlocalMap,在这边我提了key为弱引用,记住用完要及时移除Key=null的值 remove()方法。

各个引用过程(强软弱虚)

应该是我每次遇到threadlocal都会引导面试官问四种引用类型。
强引用:直接new对象,有地址
软引用:内存满,回收
弱引用;垃圾回收器看到就清理
虚引用:虚引用与引用队列联合使用,跟踪垃圾回收活动

乐观锁/悲观锁/锁升级

cas
synchronized
无锁-偏向锁-轻量级锁-重量级锁
升级过程,markword,记录锁标志位

操作系统

进程 线程 协程

这里我只说出来了线程进程的区别,协程盲点
进程、线程和协程之间的区别和联系

进程通信

我们没专业学过操作系统,原本以为可能遇不到就没看,诶,没答上,开始苦学操作系统
进程通信有7种
字节跳动视频架构(一面面经)_第1张图片

项目

我做了netty心跳包来保持通信连接,介绍心跳包实现过程,基于websocket协议,所以介绍完开始计算机网络。
介绍项目顺便把http1.0,http1.1,为什么选websocket都说了,于是下面开始https

计算机网络

面试官小哥哥知道我不太了解操作系统之后,开始问计算机网络

http报文结构

以前没关注过,然后答不出来,自己开始将http和https,然后讲了get,post方法
http请求报文,请求头,请求行,请求体

http常用方法

说了最常见的get,post
get:从指定的资源请求数据,url传参,不安全
post:向指定资源提交被处理数据,body体,安全
get,post 最常见的HTTP方法:GET和POST

http各类返回码

只说出来200,404,500,还是太少了。
字节跳动视频架构(一面面经)_第2张图片
HTTP 返回码详解

https介绍+用https输入url啥过程

https 在ssl+http协议出现的协议构建的可进行加密传输、身份认证的网络协议,要比 http 协议安全。
字节跳动视频架构(一面面经)_第3张图片
这里说出来对称加密,非对称加密,返回证书!!!忘记了,https是加密的,可以进行客户端服务端的双边认证,所以返回证书很重要,这里只记得http了,哭~

tcp和udp

说出来区别,但是面试官纠正我,虽然udp传输快容易丢失数据,但是在已经获得了数据包再向上层传输的时候,udp有自己的机制来判断信息是否丢失。
从UDP的”连接性”说起–告知你不为人知的UDP

tcp堵塞机制

慢开始:拥塞窗口,开始传输数据值数增长,达到快开始门限
拥塞避免:达到门限后线性增加,减少堵塞
快重船:一旦发现服务器向客户机发超过3次重复消息,判断消息丢失,快重传
快恢复:一旦堵塞,降低快开始门限值,重新开始慢开始,拥塞避免。

这块比较了解,说的比较多

动态调用和静态调用

面试官小哥哥好像写c的,问了这个我不知道,我找了一个网上说的,大多数都是c语言的
java调用动态库

安卓

我项目有一个安卓的,我主要负责图片获取截取,太久没看+一直准备java后端,突然问四大组件没准备,只记得activity了,哭了,大家写在简历里的都要知道啊。
四大组件:
activity
service
content provider
broadcast receiver
Android面试题(四大组件篇)

前端

没想到会问……,只用前端做了,用的mui框架,他问了我和其他前端框架的区别,还有promise用法,我前端只应用项目写了,没准备,问了javascript,不过mui框架应该提前准备的,还问了mui和react native
字节跳动视频架构(一面面经)_第4张图片

简历上写的都要会!!!

自我小结

这次没问spring,和mysql,不过今天面试问到了springmvc的底层结构,之前看过没记住。
字节第一次面试体验感非常不错,这次还是算法比较简单的,之前没怎么看操作系统,这次真踩到了,都要复习呀,同时这次面试也是非常基础的,没有遇到企业级架构,mysql,同时数据结构,算法,操作系统,项目也没有太深入,知道了自己的一些知识盲区,继续加油!

你可能感兴趣的:(面试,java,面试,字节跳动)