字节转正答辩已过,整理之前实习的面经(客户端)

今天收到意向书了,闲来无事整理了一波面经,客户端比较缺人,面试比较简单

我是21届的,但是19年就尝试去面试了,反正导师不管我,19年本着随缘的态度,由于投得比较晚,而且笔试做的不好,最后大公司只被快手和腾讯捞起来面了一面,最后阴差阳错去了荔支fm实习了4个月。
首先是19年的面经,面得不多,而且大部分是小公司,小公司的就不写了…
快手一面
第一次面试,特别紧张,一开始显示过了,后来没过,唉
1.项目介绍(根据项目问微信支付流程,git 相关)
2.多进程相关,Synchronize和Volatile的区别,使用场景
3.HashMap currentHashMap
4.android源码相关 okhttp retrofit
5.android 触摸事件的各种属性 getRawX、getRawY与getX、getY的区别
6.有什么设计模式,单例模式,工厂模式,建造者模式,代理模式的使用场景和怎么实现
7.还有没有了解其他复杂点的设计模式
8.写算法 大数相加

腾讯一面 2019/5/23
1.四大组件
2.Activity生命周期
3.算法:圆环取数,从圆环里取m个数的最大值,规定每次不能取和上次相邻的
动态规划……说实话想直接放弃,憋了半天也没写出来
后来刷了leetcode后发现是 213. 打家劫舍 II 的变形
4.GC回收
5.反射机制与原理
6.网络方面 UDP TCP区别
7.TCP握手 分手
8.socket连接,项目中怎么使用的
9.操作系统 内存清理算法
10.项目中有没有使用或了解一些测试工具(因为我是android被捞的,所以只说了检测内存泄漏的,然后就问内存泄漏的原因)

荔枝fm(实习offer) 19.7.18
一个多月前投的简历,突然打电话来叫面试,本来已经暂时不打算找实习的了
主管技术面+hr面(hr赶时间,没问多少),因为他们刚好要开会,所以两面加起来一个小时,面试体验很不错,主管会引导和分享
技术面:
1.根据笔试写的问 final static 的作用 在类上,在方法上 在变量上
2.一个长的字符串中找一个短的字符串,kmp算法
3.两个线程的情况下如何优化查找
4.两个线程同步问题,一个线程停止,通知另一个线程停止,我答的是用voltaile 定义一个变量,需要停止就改变变量的值,不过他想听的应该是使用wait/notify实现线程间的通信
5.项目中遇到的问题,如何定位,解决
6.性能优化上的问题,从各个角度上考虑,回答了Listview的性能优化方式,fragment碎片化,内存泄漏,面试官提示了约束布局,懒加载 让我去了解ViewStub
7.数据库问题,平时有用到什么数据库,知不知道ORM(对象映射关系),dao工具,知不知道原理是怎么样的,还好刚好有学过一点hibernate,知道是框架内部转换sql语句
8.自定义控件,做过哪些,然后拿去他们的产品问,这个控件该怎么实现,这个答不出来
9.问okhttp拦截器怎么使用,知不知道底层原理
10.token作用
11.非对称加密是什么
12.针对项目问了些问题,因为我有写了MVP+Rxjava,所有就问了MVP的作用,还有Rxjava是怎么实现的,还问了MVVM是怎样的

20年的面试,从由于19年投过腾讯,所以是腾讯先来联系我的,然后我才正式开始准备…面了几个都拿到offer了。客户端是真的缺人。
腾讯一面 。2020.2.17
自我介绍,学了哪些课程,使用什么语言
1.try..catch..finally.. catch 里return final会执行
2.Handler底层的实现
3.HashMap HashTable的区别
4.ArrayList LinkedList 的区别
5。算法 双向链表找中点 左右指针同时往中间走
6.syschronized.在对象和代码块的区别 实现线程安全的类
7 堆栈的区别
8.快排的实现原理 复杂度
9.在荔枝直播间还有变声器部分做了什么,实习相关
10.wait sleep的区别
11string 可以继承吗 不可以!! 是final类
12.stringbuffer 和 stringbulider的区别
13.进程和线程
11 有什么要问的


腾讯一面(鞭尸第二次) 3.7 一开始电话面,后来加了微信写算法,11点到1点左右,中途面试官可能跑去吃饭……很奇怪的面试,面了一半,要我加微信,然后让我做算法题。。。
1.自我介绍,问了兴趣爱好,头一次技术面被问这个,也是懵逼
2.介绍项目
3.一般使用什么语言,java,会不会c,c++,c++我不会,然后他就没问了,开始意识到他应该不是写android的……
4.设计模式(讲了单例,适配器,建筑者,代理),在项目中什么时候实际用过
5.了解几种排序算法,都说说(将了插入排序,快排,堆排,桶排序)
6.要我加微信,做两道算法题
6.1算法题1
一个int数组,输出数组中第二大的数,写好程序后 要求写几组有代表性的测试用例,测试用例覆盖边界条件或者极端情况;
刚才问了排序,我以为是要考我排序,就先写了个快排的,他说不用排序,我想了下,好像直接遍历过程记录最大值,发现一个数比之前的最大值大,原先的最大值就是第二大的了,然后又叫我多写几个边界条件测下,我发现写测试用例比写代码难多了……
6.2 算法题2
给定一个只包含大小写字母的字符串,请按照 A < a < B < b <C < c ... < Z < z顺序输出满足该顺序的字符串,比如输入AbBa 输出 AaBb, 输入CcDcFE 输出 CccDEF。要求 时间复杂度尽可能低,普通排序不满足时间复杂度要求。
想到了使用一个长度为52的数组比如arr,前面0-25让他代表a-z,后面26-51让它代表A-Z
然后遍历原数组,如果出现的字符是a,则arr[0]++,同理出现b就arr[1]++ A就arr[26]++
最后数组里的值就代表字符出现的次数,然后两个指针一个从0开始,一个从26开始,数组对应位置是多少就输出多少个对应的字符
7.智力题,四个1 如何算出24,可以使用任何你学会的数学规则 不局限加减乘除
使用阶乘(1+1+1+1)!,然后发现三个一好像也可以(1<<1<<1)!
然后面试官没理我了,看了下时间,12点半了,估计去吃饭了,半个小时后才跟我说今天面试到这里结束,我也很饿,又不敢走远,很绝望,只能吃方便面

网易一面 3.27 有两个面试官一起面的
1.Activity的生命周期,A启动B会走什么生命周期
2.Handler的实现
3.map的实现原理
4.输入网址后,DNS寻址过程
5.归并排序相关,时间复杂度,空间复杂度,是否稳定
6.是否了解Android各大版本的区别
7.Android 打包过程经历了什么
8.Android 混淆需要注意什么
9.view的绘制
10.算法题
(1)找链表倒数第n个点
(2)爬楼梯,每次可以1步或两步

二面忘了记录了,因为已经拿了头条的offer了,飘了,但最后网易也过了…秋招还打过来问我是否参加面试,可以免笔试直通一面…

头条
一面 3.26 别人的一面是基础,我的一面大半时间在怼项目
1.项目深挖,有多深挖多深,挖了三十分钟,我实在扛不住了,自己主动转移话题……
2.说一下多态
3.说一下显式Intent,隐式Intent的区别
4.直播项目用到是什么推流方式,用的是什么协议,底层用的是udp还是tcp,他们有什么区别
5.算法 : 前序中序构建二叉树 Leetcode 105

二面 3.29 19:30 约好时间才发现和百度笔试冲突了,唉……
1.自我介绍和项目
2.ArrayList是怎么扩容的知道吗,不知道……
3.说下HashMap
4.线程相关,synchronized和Lock的区别
5.写一个单例,问volatile的 作用 和原理
6.wait 和sleep的区别,他们分别是哪个类的方法
7.Okhttp源码,evntbus源码,如何通过反射找到方法
8. 9.类加载机制,双亲委派模型
10.handler Looper相关(好像每个公司都问过……)
11.写个堆(没听清楚,以为把数组变成个普通的二叉树,写完他说这是啥,我尴尬得重写)

三面 3.29
二面刚退出房间,喝了口水,就打电话过来了,这一面感觉比较轻松
1.自我介绍
2.擅长什么语言
3.给个题目写下(写不出来就不用聊了是吧)
在一个list中擅长一个目标值 如list = {1,2,4,2,5,2,2,6} 中删除2,返回删除后的list
使用迭代器,但是我尴尬的忘记迭代器的各种方法名了,在那里调了很久,没有代码提示很难受,最后他提醒我了
4.为什么要用迭代器,不能在遍历list时remove
5.之前实习过程中做得比较好的经历
6.重写和重载的区别
7.再写个算法 Leetcode34 在排序数组中查找元素的第一个和最后一个位置

感觉算法都好简单,我Leetcode白刷300多题了……


快手一面
笔试四道题 AC了三道。
2020.4.1 当初投快手是想着拿来练手的,结果现在才面试,头条和腾讯都hr面了,有点不想面试了,所以面的比较随意,不会的直接就说不会了……
1.自我介绍完先做三道算法题 讲思路就行
(1)一堆出现2次的数中找出现1次的数 异或操作
(2)两数之和等于目标数 返回两个数的下标 hashmap放值和下标
(3)第k小的数 大根堆,快排
2.多线程 sychronized volatile
3.单例有哪几种,写个双重校验锁的,然后问各种细节,为什么需要第二重校验,为什么使用volatile,为什么锁的是class
4.hashmap,concurrentmap 实现原理
5.handler消息机制的实现
6.内存优化了解多少
7.view的绘制流程


快手二面 2020.4.1 一面之后一个小时左右二面,中间网络卡了好几次,不知道是谁网络不好
1.android基础,四大组件,生命周期
2.service的启动方式,区别
3.如何跨进程通信
4.fragment生命周期
5.eventbus源码
6.又是多线程 sychronized volatile Lock ,synchronized可以锁String.class吗,我没搞懂什么意思,锁它有什么意义……
7.view的事件分发
8.android各个大版本的区别有没有了解(没有)
9.http协议 版本区别,2.0多路复用怎么实现,请求头有什么,get,post区别
10.项目相关
11.再写两道题
(1)合并有序链表
(2)二叉树的序列化,先序和层序方式(感觉就是写先序遍历和层序遍历)

腾讯一面 (鞭尸第三次)3.23 这一轮感觉就是基础快问快答
1.acitvity的四种加载模式,和对应哪些场景使用
2.eventbus的原理
3.java的四种引用
4.JVM运行时区域包括哪些东西
5.堆和栈的区别
6.局部变量是在类加载哪个时期分配的
7.map的原理
8.了解哪些垃圾回收算法
9.handler原理,looper是怎么轮询的,为什么不会阻塞
10.算法:爬楼梯 一步或两步,问除了动态规划还有什么方法,我说应该还有数学方法,他让我推导一下(推导斐波那契数列的数学公式,这是要招大数学家???)我假装算了一下,然后跟他说不会

腾讯二面 3.24
这一面面到很不好,面完脑子一片混乱,问了几个基础问题后就是内存性能优化相关的连续发问,大概记得这些问题,每个问题还都往深里去挖,为什么要这样做,怎样才算是性能好
1.了解什么设计模式及其在Android上的应用
2.OOM什么时候会出现
3.使用约束布局的好处,层级嵌套最好不要超过多少层
4.对于卡顿的理解,怎样算卡
5.一个应用占用内存大小怎么算合格
6.如果有网络请求,等待多少秒合适,在弱网情况下呢
7.从内存资源等多个方面讲讲对性能优化的理解
8.算法题,输入一个int 数比如12345,输入对应的中文读法,比如一万一千三百四十五

腾讯三面 3.26
这一面是电话面,想让我转ios,所以没问技术问题,就是了解我平时是怎么学习的,怎么找学习资料的,然后还让我对比了自己手机三个比较小众应用,哪个实现比较复杂,为什么

腾讯四面 3.27
这一面还是ios那边的面我,就写了三道题
1.从一堆有正有负,有浮点数里,找到第一个出现的正整数(本来以为很简单,但是浮点数和整数的判断,卡了我一下)
2.一堆可能出现多次的字符串中,找到出现一次的字符串 使用set
3.LRU缓存的实现 Leetcode 146
腾讯最后也过了,但是要转ios , 考虑腾讯转正率不高,最后还是选了头条




#校招##腾讯##快手##荔枝##安卓工程师##iOS工程师#
全部评论
字节日常实习一直在招人,欢迎投递,我的内推码:B2BPJVJ
1 回复 分享
发布于 2020-09-26 09:10
楼主,局部变量是在类加载哪个时期分配的,这是什么???类加载会触及到局部变量吗???
1 回复 分享
发布于 2020-10-26 22:09
大数学家笑到了
点赞 回复 分享
发布于 2020-10-26 20:57
请教大佬,荔枝fm的也是客户端实习吗😊
点赞 回复 分享
发布于 2020-11-16 20:14
腾讯转正率真的不高吗…
点赞 回复 分享
发布于 2020-12-10 08:17
学长加计院工作室来吗?我们学校的简历好过吗?没有工作室经验担心不给面试机会。
点赞 回复 分享
发布于 2020-12-10 10:01

相关推荐

专心打鱼:互联网搬运工,贴子都要偷
点赞 评论 收藏
分享
qz鹿:*** 祝他毕业就失业
点赞 评论 收藏
分享
评论
2
42
分享
牛客网
牛客企业服务