字节跳动Android岗经典面试真题,已拿offer

字节跳动Android岗经典面试真题,已拿offer,第1张

概述前言咱们这行似乎每个人都有个常识:程序员做到35岁之后,职业道路就很窄了,但我不信这个邪,我今年37岁,依然活跃在开发一线,并且做到了月入四万+。偶尔也有人问,你是怎么打破35岁定律的?对于这个问题我从没正面回答过,直到今年年初。今年疫情期间,与同行好友的一席聊天,让我足足思考了 前言@H_403_6@咱们这行似乎每个人都有个常识:程序员做到35岁之后,职业道路就很窄了,但我不信这个邪,我今年37岁,依然活跃在开发一线,并且做到了月入四万+。

@H_403_6@偶尔也有人问,你是怎么打破35岁定律的?对于这个问题我从没正面回答过,直到今年年初。

@H_403_6@今年疫情期间,与同行好友的一席聊天,让我足足思考了两天:回想起来其实自己之前也走过不少弯路,但比起大多数同行,自己最大的幸运,是坚持走完3条路之后,最终找准了自己最适合的那一条。

@H_403_6@对职业规划有困惑的朋友,可以听我慢慢说来。

是否能进一步优化自己的代码@H_403_6@1.保存在内存中的图片,是否做过压缩处理再保存在内存里否则可能由于图片质量太高,导致 OOM

@[email protected] 传递的数据太大,会导致页面跳转过慢。太大的数据可以通过持久化的形式传递,例如读写文件

@H_403_6@3.频繁地 *** 作同一个文件或者执行同一个数据库 *** 作,是否考虑把它用静态变量或者局部变量的形式缓存在内存里。用空间换时间

@H_403_6@4.放在主页面的控件,是否可以考虑用 VIEwStub 来优化启动速度

要小心第三方包@[email protected] 远程依赖第三方包时,版本号建议写死,不要使用+号避免由于新版本的第三方包引入了新的问题

@H_403_6@2.导入第三方工程时,记得把编码转换成自己工程当前是用的编码

@H_403_6@3.调用第三方的包或者 JDK 的方法时,要跳进他们的源码,看要不要加 try-catch否则可能会导致自己应用的崩溃

@H_403_6@4.使用第三方包时,是否加上其混淆规则若漏掉加上第三方包的混淆规则,会导致第三方包不该混淆的代码被混淆。在 DeBUG 版本没有发现问题,但是 Release 版本就会出现问题

@H_403_6@5.系统应用添加 so 时,是否在固件对应的 AndroID.mk 文件上加入新增的 so,否则系统可能编译不过

@H_403_6@

注意要成对出现的地方@H_403_6@1.系统的、自己写的,注册和反注册的方法,是否成对出现

@H_403_6@2.在生命周期的回调里,创建和销毁的代码是否对应起来比如:onCreate() 里面创建了 Adapter,那么对应 Adapter 的退出处理 *** 作(比如清空Image 缓存),一般就要写在 onDestory(),而不能写在 onDestoryVIEw()。

@H_403_6@类似的生命周期对应的代码有:onStart()、onStop();onCreate()、onDestory();onResume()、onPause();onCreateVIEw()、onDestoryVIEw()

@H_403_6@3.若 ListVIEw 的 item 复用了,对 Item 里 VIEw 的 *** 作是否成对出现比如:

@H_403_6@

@H_403_6@比如以上对 mTitleVIEw、mGreenLabelVIEw 和 mRedLabelVIEw 的 *** 作,都是成对出现。否则 ListVIEw 可能会由于 Item 复用,导致 Item 显示错乱问题

防内存泄漏@H_403_6@1.内部类,比如 Handler、Listener、Callback 是否是成 static class因为非静态内部类会持有外部类的引用。

@H_403_6@2.假如子线程持有了 Activity,要用弱引用来持有比如 Request 的 Activity 就应该用弱引用的形式,防止内存泄漏。

@H_403_6@3.要求传入 Activity 作为参数的函数,是否可以改用 getApplicationContext() 来作为参数

Handler相关@H_403_6@1.使用 VIEw.post() 是否会有问题因为在 VIEw 处于 detached 状态期间,post() 里面的 Runnable 是不会被执行的。只有在此 VIEw 处于 attached 状态时才会被执行。

@H_403_6@如果想改 Runnable 每次肯定会被执行,那么应该是用 Handler.post 来替代

@H_403_6@2.假如程序可能多次在同一个 Handler 里 post 同一个 Runnable,每次 post 之前都应该先清空这个 Handler 中还没执行的该 Runnable如:

@H_403_6@

其他@H_403_6@1.多思考某些情况下,某变量是否会为空而且在函数体内,处理参数前,必须加上判空语句

@H_403_6@2.回调函数是否处理好回调函数很容易出问题。比如网络请求的回调,需要判断此时的 Aciivity 等是否还存在,再进行调用。因为异步 *** 作回来,Activity 可能就消失不存在了。而且还要对一些可能被回收的变量进行判空。

@H_403_6@3.修改数据库后,是否把数据库的版本号+1

@H_403_6@4.启动第三方的 Activity 时,是否判断了该 Intent 能否被解析

@H_403_6@

@H_403_6@若 Activity 不存在,会出现 ActivityNotFoundException 的异常

@H_403_6@5.新注册的 Activity、Service 或 ProvIDer,若 AndroIDManifest.xml 中 exported 属性为 true,要考虑是否会引发安全性问题

@H_403_6@因为 exported 属性为 true 时,外部应用就可以直接调用起该 Activity。可能导致的问题:1)若外部应用直接启动详情页,从而让某些验证页面直接被绕过2)若外部应用给该 Activity 传递乱七八糟的 Intent,可能让该应用崩溃。也就是 AndroID中的拒绝服务漏洞

@H_403_6@5.除数是否做了非 0 判断

@H_403_6@6.不要在 Activity 的 onCreate 里调用 PopupWindow 的 showAsLoaction 方法,由于Activity 还没被加载完,会报错

@H_403_6@《960全网最全AndroID开发笔记》

@H_403_6@

@H_403_6@《379页AndroID开发面试宝典》

@H_403_6@

@H_403_6@《507页AndroID开发相关源码解析》

@H_403_6@

@H_403_6@img-VFzZEBv2-1621574831377)]

@H_403_6@《507页AndroID开发相关源码解析》

@H_403_6@[外链图片转存中…(img-K4CliqL3-1621574831378)]

@H_403_6@因为文件太多,全部展示会影响篇幅,暂时就先列举这些部分截图,大家可以**点击这里自行领取**。

总结

以上是内存溢出为你收集整理的字节跳动Android岗经典面试真题,已拿offer全部内容,希望文章能够帮你解决字节跳动Android岗经典面试真题,已拿offer所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1002373.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存