Android秋招,字节跳动一面

()开局自我介绍。

项目部分:
ijkplayer有研究过吗?(没有)


Java:
  1. int、float、double几个字节?(int、float4个字节,double 8个字节)
  2. Java有操作符重载吗?(没有,C++就有操作符重载)
  3. String进行+操作底层实现 (使用Stringbuidler 进行append操作)
  4. Java传值是值传递还是引用传递? (值传递,但是对于对象传递其值地址,修改后会改变其值)
  5. 参数对象对其地址进行修改后源地址会不会修改? (不会,对地址进行修改后引用新的地址,原有地址不会改变)
  6. Java同步机制有哪些?    (锁,这里应该展开来讲讲锁的一些机制和原理以及为什么需要同步)
  7. 为什么Java要有线程池
    线程池就是对线程进行管理的一种方式,可以防止以下情况的出现:
        1)频繁的创建线程、销毁线程浪费资源
        2)线程数过多导致线程切换过多,效率低,线程过少导致任务等待时间过长,效率低
        3)线程重用效率低,不能够很好的利用线程资源
        4) 不能提供定时执行、定期执行、单线程、并发数控制等功能。
  8. 锁static方法跟锁普通方法区别? (锁普通方法作用与实例,锁静态方法作用于类)
  9. JVM运行时内存区域?    (把五个区域以及作用都简单讲了一下)
  10. GC发生在哪个区域?        (堆区,这里应该再讲讲GC的一些机制和原理)
  11. 回调函数中为什么参数不加final会报错?    (加上final后存放位置变为方法区的常量池,这样子其他线程才可以获得到)
  12. 讲一讲泛型(这里应该把泛型的机制详细讲一讲才对)
  13. 泛型类型擦除后是什么数据类型?(其定义父类,如ArrayList是List,没有指定的话就是Object)
  14. 异常机制大概讲一下    (大概讲了异常的几种机制)
  15. Error能不能Catch住    (不可以,是一种不可检异常)
  16. 为什么Java要有异常机制,C 没有(Java语言按照面向对象的思想来处理异常,使得程序具有更好的维护性

Android:
  1. 详细讲一下Handler机制    (详细讲了一圈)
  2. MessageQueue使用了什么数据结构? (为了确保插入时维护时间顺序,因此使用了链表来做数据结构)
  3. Looper跟MessageQueue以及Handler的数量情况    (一个线程一般只有一个Looper和messagequeue,可以有多个 Handler)
  4. Looper.get为什么能够获得Looper,底层是怎么实现的?(它是一个ThreadLocal变量,在调用Looper.prepare()的时候就会把该实例存在线程当中
  5. 讲一讲TheadLocal (是一种将变量放到线程本地的操作,接下来在操作时就能够直接操作本地变量,本质上是一个HashMap来做的,)
  6. 了解HandlerThead吗?(不知道)复盘:(HandlerThread对象start后可以获得其Looper对象,并且使用这个Looper对象实例Handler,之后Handler就可以运行在其他线程中了
  7. 让你创建一个线程后初始化Looper,然后再外部如何确保获取到这个Looper是已经初始化的了?(可以通过sleep等待子线程Looper完)
  8. 讲一下OKHTTP的调用方法    (同步调用:okhttp.send()  异步调用: okhttp.excute())
  9. 讲一下OKHTTP的责任链模式    (责任链模式是在okhttp发送请求时会把请求一层一层进行处理,其中有头部处理,复用处理等等)
  10. 讲一下OKHTTP的责任链调用过程
    在发送一个任务之后,任务会进入异步消息队列,进入之后一旦被调度就会进行职责链处理,主要有五个部分:
    RetryAndFollowUpInterceptor: 该部分进行两部分的操作:在请求失败之后判断是否需要重新发起请求。   当服务器返回当前请求需要进行重定向时直接发起新请求,并且在条件允许的情况下复用当前连接
    BridgeInterceptor: 对头部进行处理,例如编码、压缩处理、设置cookie、内容长度设置。
    CacheInterceptor:对缓存进行处理,一般有三个步骤:
    1) 判断是否有可用缓存,有的话若无网络则使用。
    2) 网络请求回来之后判断是否需要更新缓存,若是更新。若不是则更新命中率。
    3)如果判断当前缓存失效,删除
    ConnectInterceptor: 负责判断是否复用连接、使用连接。主要有以下步骤:
    1) 判断该地址是否已经有连接,若有直接使用原有连接,没有进入第2步(okhttp确保一个地址只发起一个连接)
    2) 若找不到连接,则进行配置路由,配置之后再次进行查找连接,若查找连接成功复用连接,这里是为了防止http域名压缩之后出现的情况
    3) 找不到则发起新连接,且更新到连接池
    4)判断连接池有无新的连接出现,若有则删除新连接
  11. CallServerInterceptor:负责向服务器发起真正的访问请求,并在接收到服务器返回后读取响应返回。
  12. Android中还有什么地方用到了责任链模式 (回答了事件分发机制且简单讲了事件分发的过程)
  13. 事件分发上级是如何知道下级是否拦截的    (通过返回值)
  14. sharepreferrence  apply跟commit区别
    apply()方法是异步的,在提交文件修改之后,会先将文件写入到内存当中,然后创建线程异步将文件写入到外存当中。
    commit()方法是同步的提交之后马上写入到外存并且返回值。
  15. apply之后立即读数据能够读到吗?(可以,会先放到内存当中,sharedPreferences通过xml文件存储数据,获取的时候在通过解析xml文件获取
  16. apply过程中的缓存有吗?(有的)
  17. 了解动画吗?(不了解)

计算机网络:
  1. TCP UDP区别?
    可靠性角度:TCP可靠、UDP不可靠
    连接建立角度:TCP建立连接、UDP不建立连接
    传输数据角度:TCP通过字节传输、UDP通过报文传输
  2. TCP如何确保可靠的?
    这个问题还是答得少了,应该多答一些:
    连接建立的角度:通过三次握手建立连接、四次挥手断开连接
    在防止传输出错的角度:通过校验和验证是否出现错误
    在防止失序的角度:通过给每个字节编号来实现
    流量控制的角度:通过拥塞控制来进行实现
    在防止丢包的角度:通过停止等待协议实现
  3. 直播使用TCP还是UDP?
    必然是UDP

操作系统:
  1. 大端小端的概念(数据地位放在低地址为小端,数据地位放在高地址为大端)
  2. Java是大端还是小端?(不知道)(小端存储
  3. Android是大端还是小端?(不知道)(应该跟Java一致都是小端)
  4. 网络是大端还是小端?(网络是大端)

算法题:
合并两个有序链表(送分题,感谢面试官)

反问:
Q : 简单评价一下?
A : 基础不咋地,Java基础薄弱,Android多了解一些开源库,代码规范还好。
Q :啥时候发感谢信
A : 我把情况报给HR,HR决定。


总结:
这次面试感觉挺舒服的,面试官很好,就是自己Java太久没看了实在是垃圾,算法做出来了,很简单。
不过应该要感谢信了。下次继续。

个人复盘:
虽然收了感谢信但是这次面试还是受益匪浅,暴露出自己的几个缺点:
1、太久没有面试,面试的一些经验出现丢失,应该是自己遇到会的东西多讲一些,而不是等着面试官问。
2、Java基础不扎实,需要补充Java基础知识。
3、Android基础还好,但是需要有更加深度、全面的学习

接下来的面试准备有两个方向:
1、恶补Java基础
2、将Android会的部分进行深挖,高度概括总结,让面试官问的时候可以打出一套组合拳。


#面经##校招##字节跳动#
全部评论
啥时发感谢信也太秀了🤣
点赞 回复 分享
发布于 2021-09-07 18:27
楼主,问你项目难点的话,你有可以讲的吗?
点赞 回复 分享
发布于 2021-09-02 00:13
你真的问什么时候发感谢信吗?
点赞 回复 分享
发布于 2021-08-29 10:56

相关推荐

06-17 12:05
已编辑
南昌大学 Java
没想到我也能一周速通字节,javaer简历boss上被字节的测开捞了,项目是点评和rpc,之前0实习。简单说下时间线和面试内容吧,三面都是温柔的小姐姐,面试体验很好。总结来说基本没有问常规八股,都是围绕项目细节展开的场景问题,开放性问题,然后带一点八股。⌚️投递时间:5.28👋一面:6.9 40min1.自我介绍2.项目拷打(超卖问题怎么解决的,由此展开聊了很久,各种细节拷打)3.算法题:将长度为n的数组分成m个和相等的子数组,求m的最大值,非hot100原题,leetcode698有道类似的,只给了10分钟,时间有点短没完全写出来,本来感觉都凉了但还是放过我了,感恩。4.高考成绩如何实现排...
一笑而过2222:一、抖音App长期无响应原因分析 1. 客户端问题:App版本过旧存在兼容性缺陷或代码逻辑错误;本地缓存、用户数据损坏影响加载;手机系统版本低、硬件性能不足导致不兼容。 2. 网络问题:网络信号差、无网络或DNS解析失败;代理设置错误、企业网络拦截抖音域名。 3. 服务端问题:启动依赖的API响应慢、服务端故障;CDN静态资源下载超时。 4. 第三方依赖问题:广告、推送等SDK初始化异常;系统服务未启用或关键权限缺失。 5. 其他原因:系统时间错误、后台应用抢占资源;用户频繁点击启动图标引发冲突。 二、电商平台兑奖系统测试用例 1. 功能测试:验证正常兑换、积分不足、限量商品重复兑换、库存实时更新及兑换记录查询功能。 2. 兼容性测试:在不同操作系统、浏览器环境下,确保功能正常和UI适配。 3. 性能与安全测试:模拟高并发检验系统稳定性;测试接口防刷机制;防御SQL注入攻击。 4. 异常场景测试:覆盖断网、服务端数据回滚、奖品过期等异常情况处理。 5. 用户体验测试:评估兑换流程是否简洁,错误提示是否明确,页面加载速度是否达标。 三、扩展建议 使用Firebase Crashlytics等工具上报启动日志排查抖音无响应问题;针对兑奖系统进行压测,重点监控TPS、错误率及响应时间 。
点赞 评论 收藏
分享
深夜书店vv:腾讯是这样的,去年很多走廊都加桌子当工区
点赞 评论 收藏
分享
评论
1
25
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务