做了十几年的程序员了,与身边的朋友这次春招经历再结合自身的经历,写出这份春招面经,喜欢的点个收藏关注一下吧!
2020 春招四五月份面经(下)
字节一面(5 月 12 日 牛客视频 60min)
- 项目相关:计时部分如果时间特别长,怎么保证进程不被杀死呢?
- 其他项目相关的问题。
- Handler
- Looper 为什么不会阻塞
- HandlerThread
- 怎么拿到当前线程的 Looper 呢?
- ThreadLocal
- 遇到过其它内存泄露吗?
- 怎么判断对象是否能被回收?
- 哪些可以作为 GCRoot?
- OkHttp 学习过程中有什么收获吗?
- 对于提到的设计模式说下有什么好处?
- Android 当中应用到职责链模式的最突出的地方是哪个机制?
- 滑动冲突是怎么解决的呢?
- 往浏览器当中输入一个 https 的 url,之后会发生什么?
- 如果想一次性新建许多线程,每个线程都去发送一个网络请求,然后想 等这十个网络请求的返回解析完成之后再去做别的事情,怎么去做这件 事情呢?
就是用些线程协作工具类。 - 一个线程做十个事情和十个线程分别做一件事情,总的 CPU 时间,哪个 方式更快?
- 使用多线程访问共享资源需要加锁,那么为什么 Java 当中会有这个访问 冲突呢?
- 那么为什么会有主内存工作内存这样的设计呢?
- 写题目:题目是英文的,找出数组中最大的 k 个数? 我中间是写了个快排。
- 如果是这个数组特别大,k 的值特别小呢?
- 反问环节:
问了下面试官对我面试过程中暴露的一些问题有什么建议?面试官说很 多底层的问题也有接触,回答的过程比较详细了,但是对于一些场景问 题反应不够快,实践稍微缺少一些,也给了一些建议,说我准备得还是 比较充分。
问了下部门是做些什么内容?讲了下培养机制等等。 然后又问了下我对新技术的了解这些。 面试官是个年轻小哥,很好交流,这场面试总体感觉还是比较轻松的。
字节二面(5 月 18 日 牛客视频 90min)
- 自我介绍提到了项目
- 然后就开始问项目是什么样的,是课设毕设还是什么?然后说下项目。
- 然后开始问什么时候接触安卓的,开始学习 Java 的时间,学校学习的课 程等,实验室的情况等,以及做完项目以后学了些啥? 先问了这些情况以后,面试官说挺好的,然后接着问问题了。
- ArrayList 怎么扩容?
- HashMap 内部结构什么样的了解吗?1.7 到 1.8 为什么要做这样的改动 呢?插入的时间复杂度等。
- 了解 SparseArray 吗?提到的一些结构,它的作用是什么?
- volatile 这个关键字是做什么用的呢?
- 多线程操作加锁怎么用?
- Synchronized 和 Lock 的区别?这两种锁的使用场景又是什么呢?怎么 做选择?
- Java 的动态代理了解吗?
- 代码过程中用到了 Synchronized 和 Lock 吗?提了下项目当中涉及的生 产者消费者模式的运用。
- Synchronized 是可重入的吗?
- Throwable、Error、Exception 他们之间有什么区别啊?
- 怎么样让一个异常变成 CheckException 呢?怎么让别人调用你的方法必 须加 try catch 呢?
- 如果 try catch 的是 Throwable,这个时候程序执行到这抛出一个 Error, 能够 catch 住吗?
- Android 的事件分发机制?提到的拦截是在哪个方法?View 有这个方法 吗?
- MotionEvent 中的 CANCEL 事件这个事件时怎么产生的呢?
- Activity 的生命周期,oncreate、onstart、onresume 分别代表什么时 机呢?
- 这三个当中哪个能够做耗时操作呢?
- 点个按钮,ActivityA 到 ActivityB 期间,生命周期的转换。
- 说下做了什么自定义控件?父类是什么,做了哪些处理,什么效果?用 了啥? 我太啰嗦了,而且讲话还有点顿,说的差不多了,面试官说可以了,进 行下一个问题。
- invalidate 和 postInvalidate
- View 绘制的流程?
- 然后开始问我什么时候可以去实习,大四有课吗?
- 问数据库了,group by 关键字作用?join?三个范式的定义?
- 设计模式了解哪些?
- 思考问题:序列当中正负数都有,怎么要求的一个最大和的连续序列? 讲了思路以后写代码。 运行一下没写对,是后来才改对的。 面试官问我为啥之前不这么写。
- 反问:问了面试官可提高的地方,建议知识点可再细化一些,and 算法 这块动手前可以想的清楚一些。 感觉字节的面试官都很好交流的样子,面完也七点半了,面试官说 HR 之 后会通知。
字节三面(5 月 22 日 牛客视频 80min)
- 自我介绍,讲下项目
- 问了下采集图像信息以后要分析的话模型怎么训练的?
- 项目当中遇到的问题。
- 事件分发
- 事件分析,UP 事件怎么确定最后传递给哪个 View 进行处理。
- 如果说手指滑动出一个 View,并没有出发一个 Click 事件,这个时候是 怎么处理的呢?
- OkHttp 的设计觉得有些什么好的特点?说了下设计模式、连接管理、连 接复用这些。然后说了下 HTTP 当中的一些内容
- 刚刚提到的是 HTTP1 当中的内容,那么 HTTP/2 有哪些不同呢?
- 说完以后,面试官说没关系,答得不是太好吧。然后面试官说前面两面 偏基础的东西问了很多了,然后问我 Android 这个方面的学习主要是通 过一些什么途径呢?
- 现阶段最大的困难是什么呢?
- 可以实习到多久?
- 实验室的项目做到最后是个什么状态呢?是个 demo 还是说实际上有用 到?
- 发过一些专利或者著作什么没有?或者关于一些项目当中比较好的点。
- 然后开始做题,题目大概就是一个二位字符数字,然后搜索某个单词是 否在这个二维数组当中以任何位置开始存在路径能够匹配这个单词。 害,丢人了,题目比较简单,但是写完以后运行不对,就开始找 bug, 面试官也和我一起找,然后发现是一个临界条件错了。
- 反问环节: 也是问面试官从面试过程看有什么地方需要提高,但是面试官说关于缺 点这个问题,很短时间内没办法回答,但是给我提了一些建议,聊了下Android 体系当中的一些分支,深入源码等内容,学习渠道最新进展架 构 Jetpack 等。 然后问了下对实习生的组织等。
面完了,不太敢肯定面试官的意向,面试官也没有说 HR 会找我等等,就有点慌 啊嘤。
字节 HR 面
终于在周日下午,接到了 HR 的电话。 谈了下我过往的经历,了解了下我们实验室的情况这些,为什么不考研的想法 等等。然后 HR 跟我介绍了下字节这边的福利以及工作的情况这些,最后告诉我 offer 审批剩下的一些流程,就加了 HR 小哥哥的微信,开始等 offer。
学而思一面(5 月 15 日 赛码网视频 80min)
- 讲讲项目技术点
- 用到的 HashMap 说下
- 使用红黑树有啥好处
- Android 当中替代 HashMap 的数据结构有什么呢?HashMap 有哪些缺点
- LinkedHashMap 的特点,举例使用场景
- TreeMap 的特点,举例使用场景
- OkHttp
- OkHttp 和 Retrofit 的比较
- EventBus
- Glide
- RxJava
- 线程池怎么创建的
- 线程池怎么实现线程复用的
- 线程锁
- Synchronized 和 Lock 的区别
- 项目里用了哪些设计模式
- 架构模式 MVC、MVP、MVVM
- 了解哪些查找算法
- 说下二分查找
- 了解哪些排序
- 数据量很大的情况下如何排序
- HTTPs 和 HTTP 的区别
- 加载一张大图,如何压缩呢
- invalidate 和 RequestLayout 的区别
- Canvas 常用 api,某个图形的绘制怎么实现
- 内存泄露
- APK 打包过程
- 签名有啥用
- 文件上传
- 断点续传
- 常用 git 命令,那么 add 和 commit 区别
- m*n 矩阵,从左上角走到右下角的走法。
- 怎么学习,学习的渠道,读源码的方法,未来规划,未来想往技术发展 还是管理层,想在哪发展……等等。 其实我面试的过程感觉还是有好些问题没有答出来或者没有答好的,我本来想 着面试该结束了,后面面试官居然越问越来兴趣了,后面开始聊买房租房的问 题了。
学而思二面(5 月 19 日 赛码网视频 20min)
二面就问了下项目,问了一些多线程相关的问题,面试官说感觉不错就没有问 了。反问问了下实习会参与的一些项目或者工作等。 学而思 HR 面 也是一些平常的问题,然后问了下我对自己前面面试情况的一些评价,可能 HR 还要面下一个同学,我以为我多说一点会比较好,但是 HR 在我要展开的时候不 让我展开说了,然后我后面就在详细与简洁之间有些混乱,感觉自己有点啰嗦。 HR 也是湖南老乡欸巧了,后面给我提了一些语言组织上的小建议。 学而思的流程快的一批,13 号当天发笔试通知,笔试完了第二天发面试通知, 然后面试流程也很快。
阅文一面(5 月 26 日 牛客视频 50min)
- 基本数据类型 and 长度
- equals 和==,那为什么要重写 hashcode
- String x= "string" 与 String y="string",使用 equals 和==比较的 分别会有什么结果
- 那 HashMap 是线程安全的吗? 如果需要保证线程安全怎么做呢?
- synchronized 原理
- 写个单例模式
- View 的绘制
- 事件分发
- 发送一个请求会发生啥
- ListView 的缓存
- RecyclerView 的缓存有哪些不同
- UI 卡顿如何解决 阅文这里是连着面的,接着就叫我等下一个面试官了。
阅文二面(5 月 26 日 牛客视频 40min)
1.活动声明周期
- 横竖屏切换回发生什么,生命周期的变化
- 发送 http 请求的时候会有些什么内容
- OkHttp 拦截器有自己写过吗
- 为什么要建立长连接
- 题目:数组中有正数、负数,时间复杂度 O(n),空间复杂度 O(1)使他们 负数在前面部分,正数在后面部分,并且正数之间或者负数之间原来的 相对位置不变。
- 题目:字符串中的大写字母个数 阅文 HR 面 也是一些平常的问题,从过往经历开始聊,然后聊了我的学习方法,实验室的 情况等等,跟 HR 聊得挺顺利的。 不说别的,这可能是我语言组织最好的一次。 欢聚一面(5 月 28 日 牛客视频 20min) 只面了 20min,然后后面面试官说了下啥没有太听清楚。 之后有天下午,就去吃了一瓣儿西瓜的时间,回来发现电话没接,一看是欢聚 的,等到第二天下午四点也没有打给我,然后我就自己回拨过去问 HR,才给我 安排了二面,嘤。
欢聚二面(6 月 牛客视频 80min)
- 自我介绍,然后开始讲项目。
- 因为项目里面用到了 MPAndroidChar,然后这里围绕绘图啊,假如说自 己去实现一个图表怎么封装等等问了很久。柱状图、饼状图、标识等等。
- 写过的自定义控件介绍下。
- invalidate 和 requestLayout 方法的区别?
- 为什么 invalidate 不需要经过测量和布局呢?
- 那 invalidate 的过程这个 View 也不确定位置有没有变,怎么考虑呢?
- synchronized 和 Lock 的区别?开始没听清,然后面试官给写出来,面 试的时候经常要给我写一些东西,每次说“我打在公屏上吧”,感觉特 出戏啊哈哈。
- 那么公平锁和非公平锁怎么实现的呢?
- ArrayMap,SparseArray 的结构和操作等等。
- volatile
- Fragment 生命周期
- 那前面弹个对话框出来,这时生命周期会怎么走?
- Activity 的启动模式
- 了解 Kotlin 吗?说下扩展函数吧?
- 写下快排。
- 反问环节:问了下面试官在面试过程中发现的一些问题的建议等等,面 试官说有的地方思维有点乱,可以再总结好一点;然后框架设计的方面 再思考下。
欢聚 HR 面(电话 40min)
害,交谈了半个多小时,HR 要问我实习时间的时候,发现我是暑期不能去实习, 然后 HR 的反应好直接,说我们这场交谈没有意义了嘤。因为我看欢聚这个是校 招提前批的招聘,所以还是想通过面试的,但是 HR 说如果要 9 月份以后开始实 习,时间太久远了很多事情没法承诺,所以就当我是已经拒了他们的 offer 了。 感觉 HR 花了这么多时间面试,结果我又没法去实习,肯定杀了我的心都有了。
腾讯捞起(6 月 3 日)
上次正式批一轮游以后,上午游完,下午就被捞了,但是也就状态绿了十几天, 并没有发起面试就被放生了。
然后晚上接到一个电话,居然是声音温柔的女面试官,是个小姐姐。我先说明 了自己的情况,表示要去实习了,而且很久不在面试状态害怕留下不好的面试 记录,就不参加面试了吧。面试官就问了下是哪家和 base 以及转正情况这些, 然后跟我说了下这次是 CSIG 的部门,主要做的是性能优化,数据计算这些内容 的工作,并且也表示只要通过面试不会出现 hc 不够的情况了,我想了下还是决 定参加下面试,接着本来是要直接问问题面试了,但是第二天有个考试,就跟 面试官约定好第二天晚上。
第二天晚上等面试还是会感觉有点慌,毕竟腾讯,但是等到约定的时间以后, 接到了面试官的电话,然后告诉了我,经过向同事们确认以后,这个岗位的实 习未来是没有转正机会的,考虑到我现在的实习是有转正机会的,面试官说小 姐姐不想坑我,所以就木有面试了。后面就是聊了一些这个部门做的一些内容。