Android开发经验谈

四次面试字节跳动,挂了四次我都还没有放弃!误打误撞拿到腾讯Off

2020-09-24  本文已影响0人  进阶程序员007

引子

秋招过半,在网上上看了很多大佬的面经,也加了很多交流群,受到了很多朋友的提点,今天终于轮到我来分享面经啦,面试了几家大厂,最后拿到了字节跳动客户端的 offer,总结一下自己的面经和复习历程,顺便谈谈我的一些感受,给各位朋友提供一些参考。

先说一下我的情况吧,现在就读杭州电子科技大学,本科山东农业大学,本硕都是计算机。***老区山东临沂人,平常喜欢拍照、旅游、看电影和基友一起打游戏。

我对字节跳动的一些看法

首先是因为公司,周围有很多人也都在用字节的拳头产品,像抖音、今日头条、火山。字节的增速有目共睹,高速增长其实对我们求职者是一个重大利好,它就意味着更多的机遇。字节作为一家年轻的公司,还有无限可能。

其次是我对客户端这个岗位一直就很感兴趣,平时也有自己写过 APP。空闲时间我比较喜欢看一些科技数码评测,听他们聊聊用户体验,科技肥宅。能让自己参与的程序在直接交付到用户手中,成就感爆棚。

还有也是机缘巧合吧,在我准备投递我第4次简历的时候,舍友帮我找了内推,递上了简历。(好了,没差。真的最后一次了!)

字节的效率还是很高的,从约面试到最后一次面试,一周结束战斗。要是这次再不过我真的要放弃了!

一、字节/腾讯 一面

一面:

时间:2020年8月23日

时长:1小时

1、 c++从cpp文件到exe可执行文件经历的流程

2、 c++动态链接和静态链接的比较

3、 了解Android的Linux层吗(我答不了解,然后没有然后了)

4、 JVM内存管理

5、 操作系统中虚拟内存的作用

6、 操作系统中的分页机制

7、 路由器和交换机的区别

8、 View的渲染流程

9、 内部类分两种,static和非static,有什么区别。

算法题:
1、层次遍历,自定义树的结构,不一定是二叉树,按顺序输出节点的值

2、只输出一层的首尾节点的值。

1.Service和IntentService的区别

2.多线程相关,为什么Service不能直接对UI进行操作,通过子线程对UI进行操作有哪些方式

3.AsyncTask相关,常使用的方法

4.Handler中MessageQueue怎么设置执行顺序(我说通过延时他不满意??)

5.MVC,MVP,MVVM相关

6.Java多线程并发调度,线程池中如何进行调度

7.RxJava有什么了解?

7.Android组件化有什么了解?

二、字节/腾讯 二面

二面
时间:2020年8月27日

时长:45分钟

1、 自我介绍

2、 TCP和UDP区别

3、 Java接口和abstract类的区别

4、 怎么才算abstract类,可以实现实方法吗,接口可以实现实方法吗

5、 Java泛型

6、 Java多态是什么,重载和重写的区别

7、 HashMap的put和get是怎么实现的

算法题:
输入一个由(、)、[、]、{、},组成的字符串,若其符合规则,输出true,否则输出false。比如)(、({)}、[、())等就不符合规则了,但是({})这种也符合规则。
腾讯二面

问项目:
1.在项目中做了什么优化,你是怎么实现的这些功能,解决了什么问题

2.页面效果优化、代码优化,和自己的优化想法

3.handler

4.你觉得handler有哪些缺点:使用不方便,内存泄漏

5.如何优化handler使用(static, HandlerThread

6.单例模式

7.手写快排

8.mvp、mvc、mvvm

9.说一下ViewModel

10.简单地说了Lifecycle、LiveData这些

三、字节/腾讯 三面

三面:

时间:2020年9月8日

时长:65分钟

1、 自我介绍

2、 TCP三次握手和四次分手,为什么分手要四次

3、 Inner join、left join、right join的区别

4、 你了解范式吗

5、 java内部类有几种,他们的区别,匿名内部类有什么特点。

6、 sleep()和wait()的区别。

7、 service的启动方式

8、 service的生命周期

9、 讲讲你对广播的理解。

10、 给你一个项目,你会怎么做它的架构(我不会,扯到了设计模式)

算法:

1、 实现一下单例模式(因为之前扯到了设计模式)

2、 给一个数组和一个目标数,找出所有的相加之和等于这个目标数的数字组合。
腾讯三面

1.Java如何做到跨平台

2.C为什么做不到跨平台

3.静态链接库 动态链接库区别,哪个好?

4.(我提了一句Docker)于是被问什么是Docker,和虚拟机的区别是什么?哪个好?

5.编译性语言与解释型语言的区别

6.多线程如何确保平均分配到CPU的各个核

7.CPU流水线

8.DNS工作原理?根域名服务器的作用?

9.DNS污染是怎么做到的,怎么避免

10.什么是【安全】

  1. 平常怎么学习新知识

12.后面的规划

13.反问

六、最后

很幸运,2家Offer都收到了,希望大家也能收获自己满意合适的Offer!

在我看来其实大部分人停留在中高级水平,然后一直停滞不前,加上外部各种环境,产生了各种焦虑,所以很矛盾,这时候你最好的状态是快速往高级水平发展,当然这里是比较难的,这个坎也是比较难迈过去的。因为Android知识体系比较庞大和复杂的,涉及到计算机知识领域的方方面面。在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)


本文在开源项目:【GitHub 】中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

如果需要PDF版本可以在群文件夹里,自行领取!

上一篇 下一篇

猜你喜欢

热点阅读