| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> 985毕业的“打工人”,Android开发2年被裁,重新出发终于拿下字节offer -> 正文阅读 |
|
[移动开发]985毕业的“打工人”,Android开发2年被裁,重新出发终于拿下字节offer |
个人自我介绍鄙人出生于南方小乡镇,为了走出小镇,在当地够拼够努力,不是自夸,确确实实也算得上“别人家的小孩”,至少在学习这件事情少,没有要家里人操过心。 高考特别顺利,一个老牌985,具体哪个学校就不说了,不想给母校丢脸。毕业后,也算是“风光”地进入了理想公司,不说是龙头,但在当时不算差吧,那个时候算是一线。拿到offer那一刻是激动的,但没想到我人生的转折点也从此刻开始。 进入这家互联网公司后后,工作顺利,但也正因为太顺利,由顺利变成了安逸,基本上没想太多事,正因如此,也没有为自己的后来考虑,脑海里的职业规划一下子就模糊了不少。 后续后果可想而知,在这家公司待了2年,自身技术更新不及时,加上恰巧碰到互联网环境遇冷,被裁了。公司伙食很好,待遇也不错,行业内口碑也非常nice,公司以生产精品为荣,但最终还是败给了资本,连最值钱的电商业务也卖掉了。 离开是新的开始?被裁之后,算是对杭州心灰意冷,离开的那天,天也灰蒙蒙的,我非常清楚自己在这座城市生存的自信力已经被摧毁掉了,唯一的解决办法,就是换一个城市生活。没有太多犹豫的,毅然决然买了高铁票去了深圳,或许这座生命力旺盛的一线城市能够给我带来不一样的开始。 “理想很丰满,现实很骨感”这句话没想到我也能够派上用场,很显然,初入深圳的我并不顺利,经历裁员风波被消磨掉的自信心,一线城市的陌生感和距离感,没有朋友和家人的孤独感,同时袭来差一点就完全压垮了我。 近年来的安逸工作状态,让我的技术没有一点长进,我自知这个状态下去想要进到互联网头部公司定是不现实的,毕竟学历不能代表全部,技术才是最重要的。最后也是重新振作起来,梳理自己的技术知识,大胆的去尝试各种大厂面试,最终也是拿下字节的Offer,以下是我这些年来所经历的面试题,分享给大家了。 常规面试题Android面试题
内存泄露和内存溢出说一下 (1)内存泄漏memory leak :是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。 (2)内存溢出 out of memory :指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就会报错OOM,即所谓的内存溢出。 内存溢出的原因及解决方法 (1)内存溢出原因: ①内存中加载的数据量过于庞大,如一次从数据库取出过多数据; ②集合类中有对对象的引用,使用完后未清空,使得JVM不能回收; ③代码中存在死循环或循环产生过多重复的对象实体; ④使用的第三方软件中的BUG; ⑤启动参数内存值设定的过小 (2)内存溢出的解决方案: ①第一步,修改JVM启动参数,直接增加内存。(-Xms,-Xmx参数一定不要忘记加。) ②第二步,检查错误日志,查看“OutOfMemory”错误前是否有其 它异常或错误。 ③第三步,对代码进行走查和分析,找出可能发生内存溢出的位置。 垃圾回收机制说一下? 四大组件
图片
网络
优化
Java 1、Java中==和equals和hashCode的区别 Kotlin
算法
Android第三方库源码 1、网络底层框架:OkHttp实现原理 性能优化 这个主要结合你所做过的项目问,一般面试官会问你项目做过哪些方面的优化,常见的问法就是: 抽象问题
设计题
下面统计一些公司的真实面试题(一)泰科电子面经 高级安卓工程师社招面试题目1.ContentProvider的权限管理(解答:读写分离,权限控制-精确到表级,URL控制) 2.如何通过广播拦截和abort一条短信? 3.广播是否可以请求网络? 4.广播引起anr的时间限制是多少? 5.计算一个view的嵌套层级 6.Activity栈 7.Android线程有没有上限? 8.线程池有没有上限? 9.ListView重用的是什么? 10.Android为什么引入Parcelable? 11.有没有尝试简化Parcelable的使用? 12.四大组件以及使用方式 13.网络请求 14.get/post请求的区别 15.xml/json的区别以及解析方式 16.谈谈对Handler的理解 17.service的启动方式 18.屏幕适配 19.ArrayList与LinkedList区别 20.Application和Activity的Context对象的区别 21.Android属性动画特性 22.如何导入外部数据库? 23.LinearLayout、RelativeLayout、FrameLayout的特性及对比,并介绍使用场景。 24.谈谈对接口与回调的理解 25.回调的原理 26.写一个回调demo 27.介绍下SurfView 28.RecycleView的使用 29.动态权限适配方案,权限组的概念 30.Android系统为什么会设计ContentProvider? 31.下拉状态栏是不是影响activity的生命周期 32.说说ContentProvider、ContentResolver、ContentObserver之间的关系 33.请描述一下广播BroadcastReceiver的理解 34.广播的分类 35.序列化的作用,以及Android两种序列化的区别 36.Android中PID和UID的区别 37.Binder的理解,以及为什么要用Binder,进程间通信的方式 38.框架搭建选型的注意点 39.第三方SDK应用 40.MVC、MVP设计模式 41.TCP与UDP的区别 42.Dalvik虚拟机方面 43.EventBus实现原理 44.对自定义view的理解 45.详细介绍下自己做过的项目对你的成长最大?哪个的收获最大? 46.你认为一名安卓工程师最重要的特质是什么?你在工作中最终重视的因素是什么?你在工作中是怎么保持持续学习的? (二)咻电科技 安卓工程师 社招 面试技术题目1.mvc和mvp的使用场景和优缺点 2.Hashmap实现原理 3.性能优化(一定要具体说出很多方案,比如内存、电量、流量等具体解决方案) 4.单例模式的写法和各种写法的优缺点 5.okHttp、volley、retrofit等网络框架的使用和原理 6.四大图片加载框架的使用和原理 7.如何考虑架构设计 8.自定义View,绘制流程、步骤, 9.事件拦截和分发机制 10.进程间的通信方式 11.应用的创建启动流程 12…Handler是怎么导致内存泄露的 13.设计模式理解问得也多, 14.Binder驱动 15.如果在onStop的时候做了网络请求,onResume的时候怎么恢复? 16.Bitmap使用时候注意什么? 17.Bitmap的recycler()
22.微信上消息小红点的原理 23.如何优化自定义View 24.低版本SDK如何实现高版本api? 25.描述一次网络请求的流程 26.HttpUrlConnection和okhttp关系 27.Bitmap对象的理解 28.looper架构 29.Activity上有Dialog的时候按Home键时的生命周期
31.前台切换到后台,然后再回到前台,Activity生命周期回调方法。弹出Dialog,生命值周期回调方法。
33.自定义View如何考虑机型适配 34.自定义View的事件 35.AstncTask+HttpClient与AsyncHttpClient有什么区别? 36事件分发中的onTouch和onTouchEvent有什么区别,又该如何使用? (三)腾讯社招安卓岗面试经历(凉)1、synchronize用法,volatile用法,两者的区别和场景 2、动态权限适配方案,权限组的概念 3、网络请求缓存处理,okhttp如何处理网络缓存的;图片加载库相关,bitmap如何处理大图,如一张30M的大图,如何预防OOM 4、进程保活 5、listview图片加载错乱的原理和解决方案,listview是如何做缓存的? 6、https相关,如何验证证书的合法性,https中哪里用了对称加密,哪里用了非对称加密,两者的区别? 7、Android系统为什么会设计ContentProvider,进程共享和线程安全问题 (1)提供一种跨进程数据共享的方式: 由系统来管理ContentProvider的创建、生命周期及访问的线程分配,简化我们在应用间共享数据(进程间通信)的方式。我们只管通过ContentResolver访问ContentProvider所提示的数据接口,而不需要担心它所在进程是启动还是未启动 。 (2)更好的数据访问权限管理: ContentProvider可以对开发的数据进行权限设置,不同的URI可以对应不同的权限,只有符合权限要求的组件才能访问到ContentProvider的具体操作。 微信的聊天数据在本地都是加密处理的(防止root了被破解),设计一个类似的本地数据存储系统 8、jvm相关和GC回收算法的区别 9、Android相关优化(如内存优化、网络优化、布局优化、电量优化、业务优化) 10、EventBus实现原理和观察者模式在开发中的运用? 11、动态代理模式如何运用? 12、App是如何沙箱化,为什么要这么做? (四)滴滴社招面试一面 1、询问项目相关的问题; 2、概述一下****HashMap 答:HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 3、hashmap原理说一下; 4、HashMap什么时候进行扩容呢? 答:当HashMap中的元素个数超过数组大小时,就会进行数组扩容。 5、https相关过程说一下; 6、线程安全。synchronized,lock各种原理 7、如何保证通信安全性? 8、如何实现链表数组? 二面 1、项目经历介绍; 2、content-type有哪些值? 3、常见的响应码有哪些? (1)200:请求成功,浏览器会把响应体内容(通常是html)显示在浏览器中; (2)404:请求的资源没有找到,说明客户端错误的请求了不存在的资源; (3)500:请求资源找到了,但服务器内部出现了错误; (4)302:重定向,当响应码为302时,表示服务器要求浏览器重新再发一个请求,服务器会发送一个响应头Location,它指定了新请求的URL地址; 4、UNICODE和utf-8是干什么的,一个中文分别在其中占据多少大小? 5、如何批量发布? 6、应用崩溃了怎么办,如何收集崩溃信息? 7、应用网络不好如何判断? 8、通信如何保证安全? 9、android缓存如何缓存,图片如何缓存,数据如何缓存,缓存机制?** 10、js和android耦合; 11、react native 12、kotlin以及看法; 13、flutter 14、算法题:洗牌不回到原来位置; 三面 1、线程锁的区别; 2、同一个锁为什么效率有差别? 3、多态和重载区别; (1)多态是建立在重bai写的基础之上的,是类与类du之间的zhi关系,是发生在不同的类之dao间的,子类重写zhuan父类的方法。实现不同的子类,不同的实现形态。多态有3个条件:继承、重写和父类引用指向子类对象 (2)重载则是类的内部的方法构型上的不同,是发生在同一个类里面的。同一个函数名称,参数不同的多个方法,实现同一类型的功能。 4、Hashmap 5、Jni 6、设计模式:观察者模式怎么用? 7、说一下自身的优缺点; 8、你对领导期望是? 9、你对滴滴了解有多少?印象如何?说一下你的看法。 (五)字节社招一面
h. TCP/IP协议栈 i. TCP和UDP的区别
二面
6.Class对象
1 0. 子线程对UI的操作方法
三面
大厂面试复习路线多余的话就不讲了,接下来将分享面试的一个复习路线,如果你也在准备面试但是不知道怎么高效复习,可以参考一下我的复习路线,有任何问题也欢迎一起互相交流,加油吧! 这里给大家提供一个方向,进行体系化的学习:
前几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。 另外,我自己也珍藏了好几套视频,有需要的我也可以分享给你。
客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。 系统学习方向:
知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结。
“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。 主要内含微信 MMKV 源码、AsyncTask 源码、Volley 源码、Retrofit源码、OkHttp 源码等等。
面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 5:20:50- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |