字节提前批飞书Java三+四面面经(已意向)

三面(8.7 1h):面试官全程乐呵呵的,看起来就是大佬风范,呜呜呜...
  1. 简单自我介绍一下
  2. 讲讲你的项目(让我讲了15min....)
  3. 死锁的条件(互斥,占有和等待,不可抢占,环路等待,并讲了如何预防)
  4. 说的特别好,哲学家进餐问题了解吗?(n个哲学家,n只筷子 ...)
  5. 哲学家进餐问题,怎么破坏死锁?选择哪个条件破坏?(如果是占有和等待,就让哲学家一次性拿两个筷子,封装成原子性操作,否则就不拿。如果是不可抢占,就让哲学家持有筷子时设置一个过期时间,拿不到就释放。如果是环路等待,就给筷子编号)
  6. 破坏环路等待这个条件会有什么问题?(一时间没反应过来,支支吾吾)我建议你写一下(我都不知道写啥,随便划了几笔,然后说没get到意思),就是比如说哲学家1拿[1,2],哲学家2拿[2,3],会有什么问题?(噢,原来是这个意思,最后在纸上划了下说哲学家5会拿[5,1],即使给筷子编号后还是循环了)这个问题怎么解决?(颠倒其中一个哲学家的顺序,不过我还没验证这个正确性)是的,就是这个。
  7. 做道题放松一下:
    有一个Data 类,里面实现了lock方法,提供了lock()和unlock(),现在有一个线程不安全的方法:swap(Data D1, Data D2),请你实现一个线程安全的方法:swap_threadsafe(Data D1, Data D2)
  8. 最后这道题绕了很久,一直get不到面试官的意思。最后面试官说我直接告诉你吧,用两个对象的object_id处理。
  9. 我这是压力面,不知道你有没有感觉(噢,我好像没什么感觉,主要是你一直乐呵呵的,我就比较放松...)
  10. 反问:忘记准备反问问题了,随便问了个进去写go写哪些方面,面试官回答的我也忘了...
然后面试结束了。只留下凌乱的我。
过了两个小时,HR打电话告诉我说前两面面评不错,第三面有点问题,联系我8.11四面。

于是,这几天我疯狂看牛客字节的面经,操作系统和计网各种边边角角补了一堆,各种花里胡哨的链表也写了一堆。
结果四面问我的全是比较常规的问题,这几天的努力一点也没发挥出效果,反倒之前的八股和项目忘了很多,导致回答起来不是很流畅,口误也比较多。

四面(8.11 1h):面试官看起来30有余。开头自我介绍因为网络原因面试官说一直听不清楚。我说我开热点吧,然后找了3min手机... 找的我心态都崩了。
  1. 简单自我介绍一下
  2. RabbitMQ延迟队列怎么实现?(答的有点磕磕盼盼,不过意思还是说清楚了。建一个无消费者的队列,给队列设置消息的TTL,消息过期后的route-key以及消息过期后前往的交换机。当该队列里消息经过TTL过期后根据交换机和route-key路由到另一个队列,由监听这个队列的消费者消费)
  3. 对分布式事务的理解(也有点磕磕盼盼。两条不同连接里要保证逻辑上的事务一致性就是分布式事务。分布式事务实现有两种,一种是基于XA保证强一致性的Seata,另一种是基于最终一致性在业务逻辑层通过消息补偿实现,之后举了下单和锁库存之间保证事务的例子
  4. Seata通过XA实现分布式事务的流程(有三个角色:事务协调器,大事务,小事务... balabala流程说了一半发现自己不记得了,于是直接和面试官说具体细节我忘记了...)
  5. TCC了解吗?(相当于2PC手动版,我们要自己实现三个方法,具体不记得了,因为没用过)
  6. volatile特性(保证线程之间的可见性,防止指令重排。然后讲了CPU缓存一致性,总线嗅探,JVM加内存屏障指令等等)
  7. CAS原理讲一下(4个参数,1是指向对象的地址,2是偏移量,3是旧值A,4是新值B。首先根据1和2从内存地址取值存到A里,然后对该值修改得到新值存到B里,在写回内存前从内存地址里取最新的值和A进行比较,如果一致就写入,否则返回false)
  8. G1如何处理大对象的(这里答的不太好,有点乱,感觉有点跑题。G1垃圾清理是软实时的,用户可以设置G1垃圾清理的时间。G1并不是一直会清理老年代,而是堆内存到45%开始清理。G1里有一个个region,清理时会对region进行价值评估,然后结合用户设置的清理时间选择对内存性价比最高的region清理)
  9. TCP三次握手,四次挥手讲一下(balabala)
  10. TCP拥塞控制讲讲(讲了网络拥塞是啥,处理拥塞控制的流程)
  11. 设计模式里观察者模式(有Subject和Observer,Subject里维护一个List<Observer>,当Subject里的数据源发生变化时,遍历这个数组,调用Observer里的方法,这样Observer就可以感知到Subject里的数据变化,并且执行相应的操作
  12. 设计模式6大原则(这里答的是真的乱,6大原则名字我都忘了,磕磕盼盼的把6大原则是啥大概说了下。如果是以前我可以把这6大原则设计的原因和好处都解释一遍的)
  13. linux查看客户端网络连接状态的指令(不会,linux指令平时一般用于grep日志和进行一些部署操作。后来百度了下是netstat指令)
  14. 手写观察者(5min)
  15. LC322 零钱兑换(7min写完,运行时遇到一个输入输出的奇怪的bug导致结果不对,捣鼓了10min. 当时紧张死了,以为自己做错了。还好最后解决了)
  16. 说一下你debug的过程。(我的逻辑是对的,只是处理输入输出这里有点问题,然后把问题复现了,并讲了思路)
  17. 反问:进去之后转go的话在学习知识上需要偏向于哪些方面,比如是偏向于操作系统这种底层还是RabbitMQ这些中间件的应用级别(面试官说了一大堆,起码说了5分多钟... 最后给的建议是在学校期间多了解了解一些技术,然后专精一个方向,比如专精redis,这样之后遇到redis的问题你就可以处理了)

总体而言面字节面的我心累。
许愿HR面吧...

——8.20更新——
已收到意向,无HR面。祝各位小伙伴早日收割满意的offer~
——9.06更新——


#字节跳动提前批面试##面经##Java##校招##字节跳动#
全部评论
可以说一下你16的过程怎么说的吗
1 回复 分享
发布于 2021-08-16 01:35
点赞 回复 分享
发布于 2021-08-11 18:22
大佬大佬大佬大佬
点赞 回复 分享
发布于 2021-08-11 18:51
飞书LC322汇总在题库里了,https://codetop.cc
点赞 回复 分享
发布于 2021-08-11 22:37
一个字 牛
点赞 回复 分享
发布于 2021-08-12 00:54
四面之后还有HR吗?
点赞 回复 分享
发布于 2021-08-12 11:30
已经面到最后一轮了说明楼主还是很优秀的额,相信自己!
点赞 回复 分享
发布于 2021-08-12 11:32
太强了!
点赞 回复 分享
发布于 2021-08-12 11:34
请问G1的软实时是怎么理解的?
点赞 回复 分享
发布于 2021-08-12 11:43
tql大佬
点赞 回复 分享
发布于 2021-08-13 00:14
怎么学的,这么强
点赞 回复 分享
发布于 2021-08-13 00:56
345我听都没听过
点赞 回复 分享
发布于 2021-08-16 01:34
tql码住学习
点赞 回复 分享
发布于 2021-08-16 11:49
请问楼主投的base 哪里啊
点赞 回复 分享
发布于 2021-08-19 13:23
搞不好是sp
点赞 回复 分享
发布于 2021-09-23 12:05

相关推荐

社区工程一面(50min)拷打实习native层怎么调Java层函数。了解Native层和Java层内存模型的差异吗你在字节的工作?Activity的生命周期onStart和onResume的区别你怎么学安卓的了解View的绘制吗ViewGroup里面一些子View,是怎么个绘制流程如果ViewGroup自己有内容呢Layout是怎么做的点击屏幕发生的事具体场景,一个ScrollView里有个按钮,点击按住不动,向上滑动,事件分发过程是怎样的讲讲Java里的集合ArrayList忽然LinkedList的区别是什么Hash集合和Tree集合的区别是什么了解过Java中的并发吗,多线程间并发处理有哪些方法讲讲synchronized的特点讲讲volatile线程和协程的区别他们的上限有区别吗http和https的区别https握手过程算法题先增后降的数组去重并排序二面(37min)讲讲腾讯实习讲讲ClassLoader的双亲委派机制PathClassLoader和DexClassLoader的区别native怎么调javacpp的string转jstring的两种方式讲讲项目为什么用flutterDart是单线程模型,它内部是怎么做多线程并发的继续拷打实习大厂代码你有没有觉得什么很恶心的问题,你怎么看这个问题有什么治理手段吗拷打项目安卓中Binder的原理?你会不会觉得客户端能深钻的技术不多算法题(口答)n个人发糖果,相邻的人高的一定比矮的拿的多,至少要多少颗糖果编程题写一个生产者消费者模式三面(45min)你更喜欢做业务还是sdkJava中new一个String会创建几个对象抽象类和接口有什么区别final关键字有什么用cpp从源文件到可执行文件经历了什么可执行文件在操作系统怎么运行的调用一个函数,栈空间怎么变化返回值是放在哪的看你做过JNI,怎么动态和静态注册JNI?cpp的线程怎么call&nbsp;java的方法需要注意些什么安卓中遇到ui卡顿了你会怎么排查有没有用过一些工具你觉得kotlin和java比有什么优势你刚刚提到了协程,那协程是怎么实现的讲一下Handler的实现原理介绍一个你认为做的比较好的项目讲讲你在字节的工作算法题用两个栈实现队列
查看52道真题和解析
点赞 评论 收藏
分享
2024-12-29 21:17
已编辑
腾讯_微信_客户端开发
上岸了,回馈社会更新中一面(约1h)拷打项目你的登录怎么做的(WebView回调检测登录成功,html提取用户信息)经过实习你有没有学到别的方法(F12抓包,走一遍登录流程看发了什么请求,返回了什么数据,里面可能有token)之前贴吧中有人发一个链接,用户点击后会自动发一个逆天评论,怎么解决这个问题(请求中带token)token怎么来(登录时服务端返回,保存用户信息,过期时间等信息,可以用token+refresh的双token模式)拷打实习介绍一下实习为什么用到Native&nbsp;Hook(监听登录)Native&nbsp;Hook方式?(PLT&nbsp;hook,&nbsp;inline&nbsp;hook)inline&nbsp;hook原理?(改指令,跳转到代理函数)PLT&nbsp;Hook的原理?(修改GOT表)改什么?(目标函数的绝对地址)PLT&nbsp;Hook使用条件(目标函数为外部引用)怎么保证一定能Hook到?也就是你要在实际执行前hook。(Hook&nbsp;dlopen,加载目标so的时候自动hook)Hook时机?(attachBaseContext)讲讲Java层Hook?(反射修改ClassLoader,优先加载自己的dex)场景题native层怎么监控数组越界(写一个数组工具类)那已有的代码呢(hook&nbsp;malloc)hook了怎么改(不知道,提示了mprotect后说把分配内存后面的区域设为不可访问,这样越界会有异常,能被捕获)设置多大的范围?(不知道)八股安卓中内存泄漏了解吗(Service,ThreadLocal,长生命周期持有短生命周期引用)算法题解决memcpy覆盖的问题二面(约1h30min)拷打实习讲讲替换ClassLoader实习hook的细节PLT&nbsp;Hook的原理有哪些先决条件(外部引用)为什么同一个so里的Hook不到(调用不走PLT和GOT表)还有哪些Hook方式(Inline&nbsp;Hook)什么原理(插跳转指令)还有什么方法(不知道)外部引用地址是怎么填到GOT表中的(加载so的时候会记录已加载函数的地址)so函数地址是怎么来的(支支吾吾)ELF加载过程(dlopen把so加载进内存解析,具体啥结构不记得了)改符号导出表可以吗(哦哦可以,dlsym应该就是通过这个获取函数地址的)编译打包优化展开讲讲AB实验了解吗(没有了解)AB实验原理是什么(对照实验)对照实验原理是什么(控制变量观察结果)观察到B比A点击率高0.1%,可以认为B比A好吗(不能,有偶然性)那要百分之多少才没有偶然性(不知道)拷打项目有啥难点吗(没啥难点)为什么用的人这么多(口口相传)八股请求到服务器到返回结果,经历了哪些事情DNS解析是谁做的(操作系统)场景用过微信网页传输助手吗,怎么做一个消息收发的功能(可以用WebSocket)服务端你会怎么设计(保存最近几十条消息,带id)客户端呢(长轮询,服务端收到消息后如果对方在轮询中就返回消息,客户端上线主动同步消息,告诉服务器本地最新消息id,然后服务器推送后续消息)你是怎么想到的,了解过吗(没了解过,yy出来的)闲聊为什么没转正准备读研吗,为什么不读算法题第k大数位和再数位和三面(约1h&nbsp;45min)看你简历很优秀,奖项排满了,学习成绩怎么样(一般)为什么不转正在腾讯实习才系统学安卓?(是的)你做了笔记?看看(内部维基上)学了安卓有什么收获?(学到很多,也更了解kotlin了)你提到了kotlin,那说说kotlin协程和线程的区别(语言级线程,有3个调度器决定协程)用Main调度器会创建线程吗(不会)对比普通线程处理上下文,协程是怎么处理的?(也有上下文,但比线程少点)你有没有研究过kotlin协程的底层原理(io操作或suspend函数时通过挂起让出cpu)会挂起线程吗(不会)怎么挂起的(也是保存上下文吧)讲讲怎么实习优化编译打包速度的你觉得实习做的最有挑战的事是什么(native&nbsp;hook)展开讲讲你用PLT&nbsp;Hook的时候也顺便把inline&nbsp;hook也了解了吗(是的,安卓的Hook方式都了解了)有写文章吗(有)(投屏展示)有遇到困难吗(cpp编译成elf时函数名字改写)再讲讲替换ClassLoader的Hook方式?知道Apk包含哪些内容吗(classes.dex,lib,res,assets,resource.arsc索引)有没有用打印log去看过arsc索引文件有哪些东西(有,用mt看过,包含各种id和路径,以及color和string)从你的角度为什么要用这种方式去组织资源(便于访问,图片方便快速定位,color和string这种用的多的每次都从文件里读就慢了)他不会一次性读出来吧,你知道他怎么读的吗(不知道)场景题微信14亿用户信息,不用数据库,设计一个用纯文件去保存的方案(目录+数据)如果要修改信息呢(可以用链表存kv对)你得分页吧,基于这种分页结构,你还会怎么去完善它(同一个用户的信息尽量在同一页)这样每页都会有碎片,你不能每次都开一个新页吧,太浪费了,怎么找空页(用一个链表按顺序记录有碎片的页)这是一个好的设计。那并发读写效率差怎么解决(分表)怎么分(每一百万个用户一个文件)你对flutter的掌握程度怎么样(偏使用)有遇到卡顿的情况吗(有,ListView滑动卡)有没有去优化(没有)你项目中图片上传怎么处理的(压缩)只考虑size吗(是)微信图片考虑的就多了继续挖了点细节。闲聊讲讲竞赛经历玩什么游戏除了竞赛,还有什么能证明你的能力(逆向破解暴力薅某个软件的羊毛)智力题8个球有1个重量不一样要称几次能找出来(2次)如果是n个呢(log3(n))很多公司给你发offer,你会怎么考虑(优先微信)我估计微信给你发offer问题不大。面委(待更新)
牛客394942071号:nb
查看149道真题和解析
点赞 评论 收藏
分享
评论
10
74
分享

创作者周榜

更多
牛客网
牛客企业服务