5000字超详细字节跳动Android客户端面经

双非本科字节跳动Android面试题分享(已拿offer) 基本情况 本人系非985非211普通本科生一枚,有实习有项目经历但成绩普通,在面试前刷了很多面经、面试题,这里也把自己的分享下,做个回报好了,顺便攒攒人品,一到这种时候人就迷信起来了。 面试是以视频面试的形式进行的,在牛客网里进行,界面我就不贴了,没截图。 首先是面试的基本流程,刚开始是自我介绍。随后面试官会问你一些基本问题。接下来就是根据你的简历啊、前面说的内容啊来问一些针对性的问题,然后会问很多基本知识,像是计算机网络、操作系统、编译原理这些。 一面 面我的面试官是做 iOS 的,就没问我 Androi 阅读详情

在这里插入图片描述

现在,秋招马上来临,在牛客网上看了不少帖子,不少同学对大厂的面试有所忌惮,总担心准备不够。

我之前面试了好几家公司,这里总结一下自己的面经和复习历程,顺便谈谈我的一些感受,给各位朋友提供一些参考,也不要对大厂面试有抵触情绪。

我对字节跳动的一些看法

周围有很多人也都在用字节的拳头产品,今日头条、抖音、悟空问答、西瓜视频 、火山小视频、 图虫、花熊等等,这些都是字节跳动旗下的APP。字节的增速有目共睹,高 速增长其实对我们求职者是一个重大利好,它就意味着更多的机遇。虽然说今年一直都在传裁员,毕竟大环境不好,但是字节的岗位还是相对于其他大厂多上不少。

还有也是机缘巧合吧,在我准备投递的时候,(发朋友圈他看见我在找工作,所以还是要多发朋友圈)以前的同事帮我内推,递上了简历。

字节的效率还是很高的,从约面试到最后一次面试,一周结束战斗。

现在讲讲我三面时的情况,一二面和 HR 面都是凭印象回忆的,也比较容易就没写了(太多了)

在这里插入图片描述

字节跳动面试过程

1、主要是项目经验(占面试时间的40%)

没有问所有项目,你自己挑一个最难的项目来讲
突出项目难点,项目特色,项目突出贡献,要做到通俗易懂,视频面试没法画框架图

2、突出三方能力,要了解核心思想(占面试时间的20%,如果用得多可能会聊更久)

OkHttp,retrofit,RxJava,EventBus,
OkHttp基本原理,缓存原理,连接池原理,
如果每个请求都需要在url里添加字段,如何用Interceptor实现
retrofit的核心设计思想

3、android基础(占面试时间的20%)

3.1、Handler实现原理

Looper.loop()源码,即实现原理

Handler.postDelay()实现原理

基本情况是:
如果头部的这个Message是有延迟而且延迟时间没到的(now < msg.when),会计算一下时间(保存为变量nextPollTimeoutMillis),
然后在循环开始的时候判断如果这个Message有延迟,就调用nativePollOnce(ptr, nextPollTimeoutMillis)进行阻塞。nativePollOnce()的作用类似与object.wait(),只不过是使用了Native的方法对这个线程精确时间的唤醒。

如果Message会阻塞MessageQueue的话,那么先postDelay10秒一个Runnable A,消息队列会一直阻塞,然后我再post一个Runnable B,B岂不是会等A执行完了再执行?正常使用时显然不是这样的,那么问题出在哪呢?

1、postDelay()一个10秒钟的Runnable A、消息进队,MessageQueue调用nativePollOnce()阻塞,Looper阻塞;

2、紧接着post()一个Runnable B、消息进队,判断现在A时间还没到、正在阻塞,把B插入消息队列的头部(A的前面),然后调用nativeWake()方法唤醒线程;

3、MessageQueue.next()方法被唤醒后,重新开始读取消息链表,第一个消息B无延时,直接返回给Looper;

4、Looper处理完这个消息再次调用next()方法,MessageQueue继续读取消息链表,第二个消息A还没到时间,计算一下剩余时间(假如还剩9秒)继续调用nativePollOnce()阻塞;

5、直到阻塞时间到或者下一次有Message进队;

3.2、Activity的生命周期,还有各场景下,各个生命周期的回调方法

核心知识点:

onStart:start表示启动,这是Activity生命周期的第二个方法。此时Activity已经可见了,但是还没出现在前台,我们还看不到,无法与Activity交互。

onResume:resume表示继续、重新开始,这名字和它的职责也相同。Activity在这个阶段已经出现在前台并且可见了。

onPause:pause表示暂停,当Activity要跳到另一个Activity或应用正常退出时都会执行这个方法。此时Activity在前台并可见,我们可以进行一些轻量级的存储数据和去初始化的工作,不能太耗时,因为在跳转Activity时只有当一个Activity执行完了onPause方法后另一个Activity才会启动,而且android中指定如果onPause在500ms即0.5秒内没有执行完毕的话就会强制关闭Activity。

onStop:stop表示停止,此时Activity已经不可见了,但是Activity对象还在内存中,没有被销毁。

这个阶段的主要工作也是做一些资源的回收工作。

在AActivity界面点击按钮后,跳转到BActivity界面,各个activity的生命周期回调顺序

答:(A)onPause→(B)onCreate→(B)onStart→(B)onResume→(A)onStop

在A界面点击按钮后,即startActivity(B)之后调了finish()方法,各个activity的生命周期回调顺序

答:(A)onPause→(B)onCreate→(B)onStart→(B)onResume→(A)onStop→(A)onDestory

在A界面,启动了一个透明的B界面,各个activity的生命周期回调顺序

答:(A)onPause→(B)onCreate→(B)onStart→(B)onResume

在A界面,启动了一个Dialog,activity的生命周期回调顺序

答:不会回调任何函数。

在A界面,启动了一个主题是Dialog的B界面,各个activity的生命周期回调顺序

答:(等测试)

4、算法题(占面试时间20%)

面试特点:链表相关算法必须顺便,大厂常考题目,可以刷leetcode里的题目,要自己动手写,别光看题目和解析,只有自己真正思考题目,模拟考试了,才知道自己的核心问题出在哪,怎么提升

4.1、两个双向链表,返回第一个相同节点

解题思路:

寻找返回结果的特性:
第一相同节点后的内容,两个链表后半段内容都一样
如果是基于多个数据的计算,先对齐数据关键特性:
这里的关键特性就是链表的长度,便于依次对比节点相等
解决方案就是:获取链表长度,先遍历长的链表,让两个链表长度对齐
遍历数据,指针概念:
这里使用双指针概念,一个指针遍历短的链表,另外一个指针遍历长的链表

参考答案:

public ListNodetest(ListNode listNode1, ListNode listNode2) {
    if ((listNode1 ==null) || (listNode2 ==null)) {
        return null;
    }
    int length1 = length(listNode1);
    int length2 = length(listNode2);
    ListNode shortListNode = length1 > length2 ? listNode2 : listNode1;
    ListNode longListNode = length1 > length2 ? listNode1 : listNode2;
    int offset = Math.abs(length1 - length2);
    for (int i =0; i < offset; i++) {
        if (longListNode ==null) {
            return null;
        }
        longListNode = longListNode.next;
    }
    while ((longListNode !=null)
        && (shortListNode !=null)
        && (longListNode.next != shortListNode.next)) {
            shortListNode = shortListNode.next;
            longListNode = longListNode.next;
    }
    return longListNode;
}

private int length(ListNode listNode) {
    ListNode temp = listNode;
    int length =0;
    while (temp !=null) {
        length++;
        temp = temp.next;
    }
    return length;
}
字节HR 面
  • 评价一下自己前三面的表现?如果重来一次的话,对于答不上来的问题你会怎么办?

  • 介绍一下你的项目

  • 项目中遇到瓶颈是怎么解决的?

  • 你觉得你这个项目对你有什么提升?你觉得自己有什么优点和缺点?

  • 你打算如何去改进自己的缺点呢?

  • 你平常放松自己会通过什么方式呢?

  • 那后续的话除了字节你还打算去哪些公司呢?

  • 你是为什么打算去这些公司呢?

  • 你平常会怎么安排自己一天的时间呢?

面试总结

字节的面试体验还是相当不错的。过程中面试官会很耐心地听你讲,对于答不太上来的问题,给出大体思路也是可以的。回答不上来的东西,面试官也会在面试过程中跟你简单介绍一下。大概这就是为什么最开始 HR 和邮件里都有说“不会的题也鼓励和面试官交流想法”吧。

反问环节请面试官对面试过程进行评价,以及对个人能力提出一些建议的时候,面试官还是很乐意的,也很能抓住我的不足(废话不然为啥人家能是面试官呢)。

在开始面试之后,HR 全程跟进的速度非常快。每场面试结束之后 HR 会询问一下面试感受,还会鼓励我复盘一下。

下文中提及的资料是我之前收集的Android开发复习使用及刷题合集,供更多面试的朋友参考,共勉。

由于文章内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要2023年Android中高级最全面试真题答案 完整文档的可扫描下方卡片免费获取~

PS:(文末还有使用ChatGPT机器人小福利哦!!大家不要错过)

目录

在这里插入图片描述

第一章 Java方面

●Java基础部分
●Java集合
●Java多线程
●Java虚拟机

在这里插入图片描述

第二章 Android方面

●Android四大组件相关
●Android异步任务和消息机制
●Android UI绘制相关
●Android性能调优相关
●Android中的IPC
●Android系统SDK相关
●第三方框架分析
●综合技术
●数据结构方面
●设计模式
●计算机网络方面
●Kotlin方面

在这里插入图片描述

第三章 音视频开发高频面试题

●为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?
●怎么做到直播秒开优化?
●直方图在图像处理里面最重要的作用是什么?
●数字图像滤波有哪些方法?
●图像可以提取的特征有哪些?
●衡量图像重建好坏的标准有哪些?怎样计算?

在这里插入图片描述

搭建了一个基于chatGPT的微信群聊机器人,24小时为大家解答疑难技术问题, 需要的可以扫描二维码进群。

图片

2024这一年的Android面经汇总(百度、腾讯、滴滴 各行各样都会淘汰一些能力差的,不仅仅是IT这个行业,所以,不要被程序猿是吃青春饭等等这类话题所吓倒,也不要觉得,找到一份工作,就享受安逸的生活,你在安逸的同时,别人正在奋力的向前跑,这样与别人的差距也就会越来越遥远,加油,希望,我们每一个人,成为更好的自己。BAT大厂面试题、独家面试工具包,资料包括 数据结构、Kotlin、计算机网络、Framework源码、数据结构与算法、小程序、NDK、Flutter本文已被。 阅读详情

相关推荐

三年经验Android开发面经总结,,2024阿里、网易、京东等大厂最新Android面试题

如果你觉得这些内容对你有帮助,可以扫码领取!!!!

A1867350的博客 1200

字节客户端面经

1.HTTP加密过程 2.http的几个方法 3.https的加密过程 4.dns解析过程 5.post和PATCH的区别 6.http1.1和2.0的区别 7.ip地址是虚拟ip,为什么客户端和服务端能通信 8.RAII

嗑盐工作室 1992

2020这一年的Android面经汇总(百度、腾讯、滴滴,查漏补缺

职位都是:Android客户端开发 最后有一些PDF文档笔记,是准备面试的知识汇总,数据结构,计算机网络啥的基本上都有了。嗯,自己收录、整理和分类的,还请尊重知识产出。大家可以直接去我 GitHub项目中查看:https://github.com/733gh/Android-T3,快速领取请加Android粉丝裙:872206502 链家 ==================================================================== 1面 40分钟 自我介

m0_63935228的博客 764

2022年超全的Android面经(附含面试题|进阶资料)

面试应该是双向的。很幸运有接受过很多安卓开发者的面试经历。在整个过程中,我学到了很多东西,也了解了包括腾讯和阿里在内的顶级公司的面试。在整个过程中,我收集了来自我的朋友、互联网和其他来源的所有Android面试问题和一份由阿里高级架构师编写的《Android八大模块进阶资料》适用于初学者和经验丰富的开发人员。我相信初学者和经验丰富的开发人员都会从这些android面试问题中受益以及从这些资料中进行查漏补缺。内容简介内容特点一、架构师筑基必备技能1.深入理解Java泛型2.注解深入浅出。...

m0_56255097的博客 1848

【面经分享】字节抖音Android客户端3,字节跳动历年Android中高级面试题全收录

MVVM 中的持有关系呢? MVVM 中各个层在 Android 开发中的对应关系? 你的 MVVM 用到了 Jetpack 里的 ViewModel,那么它是如何保持数据的呢? ViewModel 是怎么做到在 Activity 销毁重建新实例之后还能保持不变的呢? 4. 你有提到说用的 Kotlin,那讲讲 Kotlin 用起来相比 Java 的好处? 如果用 Kotlin 去调用一个具有返回值的 Java 函数,那么这个返回值是可空的还是非空的呢? Kotlin 中的可见性..

flutter001的博客 577

Java 企业级 SaaS 架构 B2C 微信小程序电商项目实战训练营01-开发环境搭建与架构设计

本文完整覆盖从 JDK、Maven、Node.js、MySQL、Redis 开发环境搭建到整体架构设计两大核心板块。深入剖析三端分离架构(管理端/店铺端/移动端)的设计理念与 URL 前缀隔离策略,详解 Maven 九模块依赖关系和 wind-common 公共层复用机制,对比 Spring Boot 2.3 + MyBatis-Plus + Shiro/JWT 技术选型依据,解析前端 Vue 3 + Vite + Element Plus 与 uni-app 多端发布方案。

program哲学 114

2020下半年,最接地气的字节跳动Android面经分享(已收offer,Android程序员如何有效提升学习效率

懂一点应用层方面的音视频编解码知识 我的字节面经: ================================================================== 字节一面 八十多分钟:(大多是技术问题) 自我介绍,项目介绍 一个activity启动另外一个activity的生命周期调用(这里扯到了allowtaskreparent和taskaffinity handle的原理,子线程为什么不能更新UI? view的绘制过程 滑动冲突 接口和抽象类的区别 .

m0_64319112的博客 678

超全的Android面经_安卓面经(20/30)之自定义View全解析

自定义View在日常的开发中,用到的频率非常高,面试中主要会考察平时自定义View的实战,我们看看面试官可能会问什么吧:

a763450633的博客 1384

2022 年 Android最新面经,面试题,附答案,赶紧收藏起来吧

2022 年 Android最新面经,面试题,附答案,赶紧收藏起来吧

程序员徐师兄的博客 652

最优控制理论 二+、哈密尔顿函数法的补充

本章基于变分法所推出的哈密尔顿函数法,2、讨论了积分方程约束的转化、控制+状态等式约束的一阶必要条件。3、控制分段连续、状态存在内点约束等情况下的角点条件,给出了协态变量和哈密尔顿函数在内点处不连续的表达式。...

MSysの优快云 9394

一文搞定3D卷积

在讨论卷积核的时候,是不把channel维加进去的 核 = 一个可以滑动的窗口 窗口内不同位置数据之间的权值共享 3D卷积,卷积核会在3个方向上运动,那么卷积核的运动需要有三个自由度(一小块立方体,在一个大面包块内3个方向上滑动 2D卷积,卷积核只在2个方向上运动,因此只有两个自由度(一小片纸,在一大张纸内2个方向上滑动 1D卷积,卷积核只在1个方向上运动,因此只有一个自由度(一条滑窗,在一大长线上1个方向上滑动 一个卷积核运算一次 得到一个输出值 以上讨论了单个卷积核,接下来考虑多通道,一个卷积核对应一

njuptalex的博客 3万+

一份热乎的字节跳动客户端面经,已拿Offer

字节面试过程: 4月4号进行内推,7天的简历评估,11号接到电话面试,尽管猝不及防回答仓促,但好在前期准备充分,通过。14号现场面试,次日收到通知,通过,二面、三面都很顺利。20号进行HR面,26号收到Offer。 应战大厂,一靠积累技术;二靠总结复盘。面试结束后把各大厂的面试经验及高频考点梳理了一遍,整理了一套完整的Android面试考点总结(有PDF版在文末分享给大家),希望能够帮助计划冲大厂的小伙伴。 以下为字节跳动三轮技术面经历: 专业一面:(59min) 1.自我介绍 2.Flutter项目介绍.

Android23333的博客 1404

用AI+Playwright实现零代码UI自动化测试:以登录页面为例的实战指南

本文详细介绍了如何利用AI与Playwright结合实现零代码UI自动化测试,特别以登录页面为例进行实战演示。通过自然语言描述生成测试脚本,大幅降低技术门槛,提升测试效率,并支持跨浏览器验证。适合非技术人员快速上手专业级自动化测试。

weixin_28842269的博客 402

Android开发面经

(1)onMeasure:对当前View的尺寸进行测量(2)重写onMeasure(3)重写onDraw:绘制当前View(4)自定义布局属性 < declare-styleable name = " MyCircleView " >

clearend的博客 375

ROS实践(四)机器人SLAM建图(gmapping)

本文介绍了SLAM技术及其实现方法。SLAM(同步定位与地图构建)让机器人在未知环境中通过传感器数据自主定位并构建地图。文章详细讲解了激光雷达、RGBD相机等常用传感器,以及gmapping和map_server这两个ROS功能包的使用方法。重点阐述了SLAM建图实验步骤:配置gmapping节点参数、启动机器人仿真、运行gmapping节点、使用rviz可视化工具、通过键盘遥控机器人完成地图构建并保存。实验结果表明,该方法能有效实现机器人自主建图功能,为后续导航等应用奠定基础。

qq_1033275663的博客 4335

从时频谱图到智能感知:雷达信号处理的AI进化之路

本文探讨了人工智能在雷达信号处理中的革命性应用,特别是深度学习在时频谱图分析中的突破性进展。通过对比传统信号处理方法与AI驱动的解决方案,展示了CNN、3D CNN等模型在目标检测、行为识别等场景中的优势,并分析了数据获取、模型优化等关键技术挑战。AI赋能的雷达技术已广泛应用于智能交通、工业检测和医疗健康领域,展现出巨大的发展潜力。

weixin_29284201的博客 507

Android 面经总结分享(相当走心)_安卓面试经验,2024年最新android 面试基础

他之前在做面试准备的时候,从网上查找收集整理了一些 Android 开发相关的学习文档、面试题、Android 核心笔记等等文档,进行刷题复习 Android 相关的知识,通过这次的面试效果检测,也体验出了结果。: 这个环节需要你按实际情况伺机而动,因为有的大厂是一条龙面完,有的是每一次面试都单独约,但是大厂一般的流程都比较慢,都在1周以上才能完成整场面试。其实还有几家小型公司的面试,我就不在此一一的说明了,因为文章篇幅长度有限,所以就挑选了几个自己觉得面的还不错的公司进行跟大家分享。

2401_84103616的博客 1283

【硬件开源实战】STM32G070RBT6开发板从设计到避坑全解析

本文全面解析了STM32G070RBT6开发板从硬件设计到避坑的实战经验。详细介绍了电源设计、时钟电路、PCB布局等关键环节,分享了成本控制、焊接测试、软件开发和外设驱动的实用技巧,帮助开发者高效完成项目开发。

weixin_26897585的博客 237

2024面试字节跳动看这篇就够了!安卓程序员的面试经历及其感悟!

26)客户端设计一个网络库,需要考虑哪些问题;29)Java中如何判断一个对象是否存活,有哪些GC Root根节点;30)Java中异常体系;31)什么时候出现内存溢出、用过什么内存泄漏的工具;1)熟悉那些设计模式呢?2)动态代理底层是如何实现的?3)讲讲Retrofit的动态代理吧4)能简单说说JVM内存模型的目的以及在内存中区分为哪些区域吗?5)内存回收机制大致讲讲呗?6)类加载机制完整细致的描述一下把7)类加载器的双亲委派原则说一下吧?(这里有一个疑问,我说父子类加载器不是继承关系,然后面试官说不太对

2401_89285791的博客 947

深入解析LVDS电平标准在LCD屏接口设计中的关键作用

本文深入解析了LVDS电平标准在LCD屏接口设计中的核心作用。文章不仅阐释了LVDS低电压差分信号的工作原理、关键电气参数及抗噪优势,还详细对比了VESA与JEIDA两种主流数据格式,并提供了从PCB布局布线到信号调试的实战避坑指南,是确保高速、稳定显示的关键技术参考。

weixin_28419039的博客 335

软件可靠性测试与评价

本文系统介绍了软件可靠性工程的核心内容,包括可靠性概念、模型分类、测试方法和评价体系。重点解析了可靠性测试的三大步骤:定义运行剖面、设计测试用例和实施测试收集数据,并以智能安防系统为例说明具体应用。可靠性评价需结合业务场景,通过量化指标(MTBF、失效率等)和模型预测持续优化系统。文章强调可靠性需贯穿软件全生命周期,通过闭环反馈实现持续改进,为关键系统提供质量保障。

moton2017的博客 2050

android 面试经历(一)

到这儿就基本上完事儿了.面试官最后问了下有什么想问的,想了解了.我大概问了一下...一个小时的面试就差不多结束了.刚参加完面试就来给各位大佬汇报了哈哈。

lizhi864282291的博客 306

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

两年滴滴和头条的后端开发经验!字字都是肺腑之言!

作者:syntax_errorwww.nowcoder.com/discuss/351805先简单交代一下背景吧,某不知名 985 的本硕,17 年毕业加入滴滴,当时找工作时候也是在牛客...

Java笔记虾 620

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

字节跳动客户端一面面经(附答案)

福利来啦:后台回复“20210126”,获取PDF版面经题解~ 主题一:C++ t1. int a[10]; 这个数组的数组变量和数组内容都是存在哪里的? 若是全局数组,则会被创建在静态存储区;其他情况会被分配在栈上。 t2.指针数组和数组指针的区别? 指针数组本质上是数组,每个数组元素指向一个int型变量的地址,数组占多少个字节由数组本身决定。 数组指针本质上是指针,是一个指向一个数组的指针变量,32位系统下永远占4个字节。 t3. STL中vector和list的区别? vector和数组类似,拥有.

BNDSllx的博客 1632

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

专科毕业三年,从外包公司到今日头条offer,我想把面试心得分享给你

美团 RN 相对于原生 RN 的有什么优势 【3面 - 基础加深】 你们公司 Picasso 有使用过没,介绍下 Picasso 单引擎,在多 Bundle 的情况下怎么保证数据隔离的? 美团 RN 与 Picasso 的区别 4.省略若干项目相关问题… RN 的页面追踪埋点如何实现的 美团首页是否是 RN 页面,MTFlexBox 原理 synchronized 修饰 static 方法、普通方法、类、方法块区别 synchronized 底层实现原理 volati.

m0_66264856的博客 879

Android 面经总结分享(相当走心)

……

1 467
上一篇: Android之Bmob移动后端云服务器
下一篇: 一位3年Android开发的焦虑:月薪不到3万,担心被应届生取代
Agent学习路线
博客等级 码龄6年 1万+粉丝 1903原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值