淦!在外包开发的三年给整废了,备战两个月终拿到Android阿里字节哈啰offer总结,阿里P6+这回稳了!

面试时候就感觉不靠谱,因为面试地点是位于近江附近的望江国际里面的温州银行,面试前网上搜了广电运通的信息,说是国企,所以我就硬着头皮接下 offer 了,没想到面试 Android 结果做的 C++,而且也是驻场开发。

入职一月半就又离职了,这时候我的简历就很糟糕了,8 个月的外包经历又加上近期工作只有一个半月,然后我又进了外包。这次是华为外包。

入职

技术面试只有一轮,是华为员工进行的电话面试,大概半个多小时,都是 Android 基础又常见的面试题,但是热修复、内存泄漏、内存优化、插件化、组件化、okhttp竟然一个问题都没问。

隔天,某软国际 hr 通知我面试通过,还要接受 hrbp 的电话面试。顺利结束后,给我发了链接是牛客 Android 在线笔试(感觉这个顺序给弄反了),然后就是到滨江这边的和瑞科技园签合同,hr 和我说,我要先去华为办公一个月再回和瑞科技园办公,我签的是 FP 模式,不是驻场开发。

前一个礼拜都在进行信息安全、网络安全等培训,培训通过后说是才给办华为工卡。

作为过来人的体会,外包被歧视真的是一个社会问题。

大家说是一个地方工作,但是那种隐形的阶级感是在的,就是有很多正式员工很有优越感去使唤外派员工。

实际上就是这样,外包人员不可能接触到核心一点的东西,内部的很多文档,点进去可能都没有权限。加班只能调休没有加班费。

有时候仔细想想,外包和大厂在智商上的差距有那么大吗?

辞去第二份外包工作之后,花了大量的时间复习准备面试。杭州的一二线公司基本上都去面试过了,包括阿里,字节,快手,滴滴,有赞,涂鸦,哈啰(腾讯没有客户端的hc),其中也拿了几个不错的offer。这里就简单分享下部分面试题和准备工作吧:

备战大厂


战况:

  • 滴滴:二面挂

  • 快手:一面挂

  • 阿里:三轮技术面 + 一轮HR 面

  • 有赞:三轮技术面 + 一轮HR 面

  • 哈啰出行:三轮技术面 + 一轮HR 面

  • 涂鸦智能:三轮技术面 + 一轮HR 面

  • 字节跳动:三轮技术面 + 一轮HR 面

关于面试前的准备工作,首先就是先把简历给优化了,毕竟简历算的上是大厂面试的墙门转了。

写一份不被扔垃圾桶的简历

  • 简约清晰:技术人的简历可以简约一点,简约不等于简单,你的项目经历和技术深度可以很深,但是体现在简历上一定高度概括,简历上不适合长篇大论的写记叙文,议论文。

  • 突出重点:一份简历如果全文都是做了系统,参与了功能,面试官要自己找重点,所以最好简历直接开门见山,我在项目中扮演什么角色,搞了什么大事情,拿到什么结果,最好是带数据作为支撑的,有个词叫可量化,如果就是访问量小但流程复杂度高,你可以总结怎么做模块化开发、流程灵活性配置、效率提升等等,写到JVM 内存调优你可以写新生代/老年代内存回收时间提升了 **ms等等,这都是参考,可以辅助一些图或表在简历中,直观来说一图二表三文字,当然前提是你图表确实有亮点。

  • 细节:细节决定成败,有几个细节要关注:1.不要有错别字;2.前后逻辑一致,数据不要自相矛盾;3.简历不要压缩、不要群发、邮件带正文介绍自己;4.排版干净清爽

由于本人之前的职级有点低,所以这次的目标岗位是P6+ ~ P7岗(虽然最终还是只拿到了P6+的岗位)。如果有高P的大佬,那么下面的面试题看看就好,意义不大。

滴滴

一面:

  • 简单介绍下项目中遇到的难题,怎么解决的?

  • 大图加载的优化方案

  • java注解元注解有哪些,有什么区别

  • 简要讲解下APT技术

  • ButterKnife为什么在子module要用R2文件,子module为什么不能使用switch-case来对view的id进行区别处理

  • Activity.getWindow什么时候为空

  • Handler 发送延迟消息,是否一定会在指定时间以后执行。异步消息怎么判断。消息列表是按什么顺序排列

  • Looper在没有消息时,怎么处理,如何进行线程阻塞

二面:

  • 简要介绍下项目中的亮点

  • 主线程修改UI为什么会导致崩溃,怎么解决的

  • 为什么Android要设计单线程操作UI

  • 简单介绍下Activity启动流程

  • Handler机制原理, Looper的阻塞机制

  • 内存优化做过哪些,用过哪些工具

快手面试

一面:

  • 如何计算bitmap大小,如何检测bitmap是否超过了1M,并打印

  • 如何给在ImageView里面展示一个带边框的bitmap

  • Handler机制

  • ANR有哪些,怎么监控

  • LRUCache原理

  • 什么情况下会出现ConcurrentModifyException,为什么会出现,怎么解决

  • 线程池使用过没,有哪些参数,什么作用

  • HashMap原理

  • SparseArray的原理

  • SparseArray和HashMap的查找和插入时间复杂度是多少

  • Android打包流程, 字节码插桩在哪个流程中实现

  • 热更新有了解过么,tinker的原理是什么,有什么缺点。 有没有其他框架没有这个缺点的,怎么实现的

  • Http 1.0,Http1.1 ,Http 2.0的区别 keep-alive和多路复用有啥区别

  • 了解过HttpDNS么,什么作用

  • 手写一个生产者和消费者模型

阿里面试

一面:

  • 卡顿检测怎么做的,为什么要这么做,会有兼容问题么

  • 如果降低crash率的,有做哪些处理

  • 觉得哪些东西做的比较好,说一下

  • jsBridge是怎么实现的,如果客户端向前端发送消息怎么发送。

  • 在图片框架选型的时候怎么考虑的,Fresco,Piccaso,Glide之间的优缺点

  • 自定义一个从底部滑出的抽屉,该怎么做,需要有哪些考虑的点

  • 一个简单的RecyclerView,说一下手势Down,Move,Up的分发。如果TextView上面设置了点击事件,那么分发逻辑是怎么样的

  • 项目是怎么进行架构设计的

  • 项目是否采用模块化处理,怎么做的,怎么进行交互

  • git-merge和git-rebase的区别

二面:

  • 现在项目的整体设计是怎么样的

  • 降低crash率做了哪些处理

  • 怎么检测线上卡顿问题

  • kotlin相比于java有哪些优势

  • 什么时机可以认为页面加载完成

  • 内存优化有做过哪些

  • 讲下merge和include

  • 讲下运营商DNS劫持,又是如何防止DNS劫持

  • 怎么使用Fragment的, 是采用一个Activity多个Fragment的形式么

  • 有没有使用过一些跨端技术

三面:

  • 项目合并做了哪些事情

  • 怎么检测线上卡顿

  • 怎么检测线上内存泄漏

  • 做了哪些性能优化

  • 最近研究了哪些新技术,谈谈看法

  • 何如学习提高自己的技术

  • 说说看自己的优劣势

  • 对于现在做的产品有什么看法和见解,怎么看待竞品

有赞面试

一面:

  • 组件化的架构怎么设计的

  • 组件之间怎么通信,除了EventBus还有其他哪些了解过

  • EventBus是怎么工作的

  • Router框架怎么设计的

  • LiveData为什么具有生命周期感知能力,如何实现的

  • APT怎么实现,如何生成代码文件

  • MVP与MVVM的区别

  • MVP为什么会存在内存泄漏的可能,怎么解决

  • 线程池的创建有哪些参数,有什么作用

  • 有用过kotlin么?object关键主要应用在哪里? let和run的区别

  • GC有哪些算法,现代虚拟机基本采用什么算法,为什么这么做

  • Activity的启动流程

  • 在APP进程还没创建的时候,会做哪些额外操作,app进程是谁创建的

  • View是如何显示出来的

  • 如何把像素点显示到屏幕上

  • Glide三级缓存策略有了解过么

  • Glide为什么会感知生命周期

  • 做过哪些性能优化

  • 最近写的这篇博客写的什么,遇到了什么问题,怎么解决

二面:

  • 讲讲项目的组成

  • retrofit2原理

  • 用过rxjava2哪些操作符,zip什么作用。

  • 热修复的原理

  • APT技术怎么实现,如何理解AOP,有过哪些应用场景

  • MVC,MVP,MVVM的区别

  • 讲一下LiveData+ViewModel怎么实现生命周期, 屏幕旋转时,会保存数据么

  • 有没有碰到过LiveData接收多次消息的问题,LiveData的postValue和setValue有什么区别,平时怎么使用

  • glide怎么实现生命周期的监听

  • 组件化的方案,如何提高编译效率

  • 组件通信用的什么

  • 有没有写过印象深刻的框架

  • 平时周末会遇到线上事故么,怎么处理

  • 平时开发过程怎么沟通协调,在里面作为什么角色存在。

三面:

  • 讲一下你觉得成长最大的一个项目,为什么

  • 组件化考虑的因素有哪些,为什么这么考虑,为什么使用AAR包就会提高编译效率

  • 说一个你觉得做的比较好的点。

  • 有没有跨端经验

  • 有没有推动过项目的一些方案的制作和实施。讲一下怎么做的

哈啰出行

一面:

  • 讲述一下自己做的最有亮点的项目

  • view的绘制流程

  • View的事件分发流程

  • ViewPager内部嵌套同向RecyclerView,RecyclerView滑动与ViewPager滑动冲突解决方案

  • 详细说下Handler机制

  • Handler会存在哪些问题,怎么解决

  • 设计模式用过哪些,简要讲述下最熟悉的几个设计模式,怎么设计,为什么这么设计

  • APT怎么实现的,元注解什么作用。 IOC怎么实现

二面:

  • 讲述一下自己项目亮点

  • 讲一下路由框架的架构设计,路由还可以实现哪些功能

  • 容灾方案怎么实现,怎么做降级处理,怎么做AbTest

  • App Link有了解过没

  • Handler的机制,如果取不到消息接下来怎么做。

  • APP启动做过哪些优化,如果启动优化的负责人,你会怎么做

  • Activity的冷启动流程

  • Application由谁创建,Activity由谁创建。ContentProvider的onCreate发生在什么时候

  • 热更新的原理,插件化的原理

三面:

  • 讲述项目经历

  • 讲一下自己觉得做得最好的地方

  • 有做过哪些性能优化

  • 让你负责埋点功能,你怎么设计实现

  • leakcanary实现原理

  • flutter有了解过么

  • 讲当前部门的主要业务

字节跳动

一面:

  • git cherry-pick 操作commit id一样么

  • git merge和rebase的作用

  • Fragment 如何传参的,有没有使用构造函数传参

  • SurfaceView和View绘制上面的差别,可以设置层级么。 mediaOverlay什么作用

  • 插件化和组件化的差别, 插件化的加载过程

  • 长图加载解决方案 DecodeRegion的底层原理

  • 算法:A方法返回0和1的概率是p和1-p, 设计一个算法让0和1返回的概率各是1/2

  • opengl 顶点着色器, 片段着色器

  • classLoader通过什么判断class是否已经加载到内存中

  • 内存优化怎么做的

  • 滑动冲突怎么解决 nestchild和nestparent如何实现手势分发

二面:

  • OpenGLES 怎么使用

  • 线程启动方式

  • HandlerThread了解过么

  • Synchronized原理,notify wait底层是怎么做的, 了解过锁的膨胀么

  • CAS操作如何保证两个线程数据安全

  • Dialog和Activity属于同一个window么,为什么

  • 用过哪些设计模式

  • 讲讲设计原则,项目里使用情况

  • 讲讲现在项目里的网络库, OKHttp有哪些优势(相比较于以前的HttpClient和HttpUrlConnection)

  • EventBus 内部使用什么样的数据结构保存,EventBus的优缺点

  • Bitmap内存怎么计算 假设一个100*100的图片放入xxhdpi的文件夹,在720的手机上面显示,Config是ARGB8888。 内存大小多少

  • 讲讲为什么使用MVVM,MVP为什么会出现内存泄漏, MVVM为什么不会出现内存泄漏

  • VSync信号 什么作用 同步多次执行addView,removeView等UI操作为什么不会多次进行View的绘制

  • 算法:如果将一串路径反转 例如 /a/b/././c/…d/e -> /e/d/c/b/a

三面:

  • 自动登出如何处理的

  • 登录之后页面,数据刷新怎么处理

  • TCP和UDP的区别, 讲下视频通话中哪些用到了UDP,哪些用到了TCP

  • Java的Thread是JVM创建的还是系统的

  • Thread可以设置大小么

  • JVM的内存回收算法

  • View的onMeasure测量逻辑

  • 解决过的难题

  • 讲下mvvm的设计,与mvp相比优势是什么,如果用mvp如何防止内存泄露

  • 100个人编号为1100,山洞有100盏灯,编号为1100。 人依次过山洞,当人经过【灯编号可以整除人编号】的路灯时,按下开关。假设刚开始灯都是灭的,那么100个人出去以后,有多少盏灯是亮着的。

  • 给定两个职员,找出最近的公共上级 (树的最近公共祖先节点

总结

我一般都是建议不要去外​
包,不是我对外包有多大仇恨,也不是有意甩锅外包公司,人家也是企业,也是靠实力看市场来赚钱。曾经也在外包干过三年的我,三年一点成长没有(没精力,天天加班,也没空间提升,因为大家都是干着流水线式码农的工作),不是忙项目就是忙出差,真的废了的一踏糊涂。

眼下正值很多毕业生找工作的季节,对于初入社会的职场人来讲,第一份工作特别重要,它一定程度上决定了后面几年的路是怎么样的,是完美入场,还是完美入坑,区别还是很大的。

面试大厂无论如何,你回答的层面最好足够深,从源码层级说起来。有时候面试官的对问题的看法和你的看法有分歧,此时就需要你是否可以从源码的层面上对这些问题有自己的解释。

面试的时候只需要沉着冷静的思考,从源码的角度对面试官抛出来问题进行分析,就能比较轻松的解决。

技能储备冲击大厂

Android学习是一条漫长的道路,我们要学习的东西不仅仅只有表面的 技术,还要深入底层,弄明白下面的 原理,只有这样,我们才能够提高自己的竞争力,在当今这个竞争激烈的世界里立足。

最后

小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助

因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

资料⬅专栏获取
何,你回答的层面最好足够深,从源码层级说起来。有时候面试官的对问题的看法和你的看法有分歧,此时就需要你是否可以从源码的层面上对这些问题有自己的解释。

面试的时候只需要沉着冷静的思考,从源码的角度对面试官抛出来问题进行分析,就能比较轻松的解决。

技能储备冲击大厂

Android学习是一条漫长的道路,我们要学习的东西不仅仅只有表面的 技术,还要深入底层,弄明白下面的 原理,只有这样,我们才能够提高自己的竞争力,在当今这个竞争激烈的世界里立足。

最后

小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助

因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

[外链图片转存中…(img-lVEwNCWF-1719112583522)]一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

资料⬅专栏获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/737238.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

安装react之nvm版本低引起的问题

1.背景 准备搭建一个react,然后看官网文档 创建项目,使用命令行 npx create-next-applatest 创建项目的流程都是正常的。当我准备运行项目的时候,报错了 原先的报错没有了,从网上找了一个类似的 重要的内容是:当前…

[面试题]Jenkins

[面试题]Java【基础】[面试题]Java【虚拟机】[面试题]Java【并发】[面试题]Java【集合】[面试题]MySQL[面试题]Maven[面试题]Spring Boot[面试题]Spring Cloud[面试题]Spring MVC[面试题]Spring[面试题]MyBatis[面试题]Nginx[面试题]缓存[面试题]Redis[面试题]消息队列[面试题]…

发表在SIGMOD 2024上的高维向量检索/向量数据库/ANNS相关论文

前言 SIGMOD 2024会议最近刚在智利圣地亚哥结束,有关高维向量检索/向量数据库/ANNS的论文主要有5篇,涉及混合查询(带属性或范围过滤的向量检索)优化、severless向量数据库优化、量化编码优化、磁盘图索引优化。此外,也…

k8s 部署 ruoyi 前后端分离项目

本文视频版 https://www.bilibili.com/video/BV17ugkePEeN 参考 https://blog.csdn.net/qq_50247813/article/details/136934090 https://gitee.com/nasaa/RuoYi-Vue-cloud https://www.itsgeekhead.com/tuts/kubernetes-129-ubuntu-22-04-3/ https://kubernetes.io/docs/se…

Kimichat使用案例026:AI翻译英语PDF文档的3种方法

文章目录 一、介绍二、腾讯交互翻译TranSmart https://transmart.qq.com/三、沉浸式翻译三、谷歌网页翻译一、介绍 短的文章,直接丢进kimichat、ChatGPT里面很快就可以翻译完成,而且效果很佳。但是,很长的PDF文档整篇需要翻译,怎么办呢? 二、腾讯交互翻译TranSmart https…

示例:WPF中应用DependencyPropertyDescriptor监视依赖属性值的改变

一、目的:开发过程中,经常碰到使用别人的控件时有些属性改变没有对应的事件抛出,从而无法做处理。比如TextBlock当修改了IsEnabled属性我们可以用IsEnabledChanged事件去做对应的逻辑处理,那么如果有类似Background属性改变我想找…

构建未来应用的核心,云原生技术栈解析

🐇明明跟你说过:个人主页 🏅个人专栏:《未来已来:云原生之旅》🏅 🔖行路有良友,便是天堂🔖 目录 一、云原生技术栈 1、容器和容器编排 1.1 Docker 1.2 Kubernete…

如何在Android中实现多线程与线程池?

目录 一、Android介绍二、什么是多线程三、什么是线程池四、如何在Android中实现多线程与线程池 一、Android介绍 Android是一种基于Linux内核的开源操作系统,由Google公司领导开发。它最初于2007年发布,旨在为移动设备提供一种统一、可扩展的操作系统。…

朴素贝叶斯案例

一、朴素贝叶斯算法: 朴素贝叶斯算法,是一种基于贝叶斯定理与特征条件独立假设的分类方法,基于贝叶斯后验概率建立的模型,它用于解决分类问题。朴素:特征条件独立;贝叶斯:基于贝叶斯定理。属于…

【论文精读】分类扩散模型:重振密度比估计(Revitalizing Density Ratio Estimation)

文章目录 一、文章概览(一)问题的提出(二)文章工作 二、理论背景(一)密度比估计DRE(二)去噪扩散模型 三、方法(一)推导分类和去噪之间的关系(二&a…

数组 (java)

文章目录 一维数组静态初始化动态初始化 二维数组静态初始化动态初始化 数组参数传递可变参数关于 main 方法的形参 argsArray 工具类sort 中的 comparable 和 comparatorcomparator 比较器排序comparable 自然排序 一维数组 线性结构 静态初始化 第一种:int[] a…

[系统运维|Xshell]宿主机无法连接上NAT网络下的虚拟机进行维护?主机ping不通NAT网络下的虚拟机,虚拟机ping的通主机!解决办法

遇到的问题:主机ping不通NAT网络下的虚拟机,虚拟机ping的通主机 服务器:Linux(虚拟机) 主机PC:Windows 虚拟机:vb,vm测试过没问题,vnc没测试不清楚 虚拟机网络&#xff1…

Vue的Router?一个小demo秒了

效果展示 正文 登录页 <template><div><div class"login"><h3>图书管理系统</h3><div class"user"><span>账号&#xff1a;</span><input type"text" v-model"user" /></…

ClickHouse备份方案

ClickHouse备份方案主要包括以下几种方法&#xff1a; 一、使用clickhouse-backup工具&#xff1a; &#xff08;参考地址&#xff1a;https://blog.csdn.net/qq_43510111/article/details/136570850&#xff09; **安装与配置&#xff1a;**首先从GitHub获取clickhouse-bac…

Node.js是什么(基础篇)

前言 Node.js是一个基于Chrome V8 JavaScript引擎的开源、跨平台JavaScript运行时环境&#xff0c;主要用于开发服务器端应用程序。它的特点是非阻塞I/O模型&#xff0c;使其在处理高并发请求时表现出色。 一、Node JS到底是什么 1、Node JS是什么 Node.js不是一种独立的编程…

vue3页面传参

一&#xff0c;用query传参 方法&#xff1a; router.push({path: ‘路由地址’, query: ‘参数’}) 例子&#xff1a;a页面携带参数跳转到b页面并且b页面拿到a页面传递过来的参数 在路由router.ts配置 a页面&#xff1a; <template><div >a页面</div>…

基于YOLOv5的火灾检测系统的设计与实现(PyQT页面+YOLOv5模型+数据集)

基于YOLOv5的火灾检测系统的设计与实现 概述系统架构主要组件代码结构功能描述YOLOv5检测器视频处理器主窗口详细代码说明YOLOv5检测器类视频处理类主窗口类使用说明环境配置运行程序操作步骤检测示例图像检测视频检测实时检测数据集介绍数据集获取数据集规模YOLOv5模型介绍YOL…

测试辅助工具(抓包工具)的使用2 之 抓包工具的基本用法

1.过滤设置: Filters- --- 勾选use Filters- --- 下拉选择show only the following hosts ---- 输入域名或者ip地址(多个地址用;隔开) --- 点击action(Run filterset now) 2.删除数据 方式一:点击Remove all 方式二: 黑窗口输入cls,回车 删除一条数据:选中数据---右键选择Rem…

【硬件开发】共模电感

为什么电源无论直流还是交流的输入端都需要一个共模电感 图中L1就是共模电感&#xff0c;长下面这个样子&#xff0c;两侧的匝数&#xff0c;线径和材料都是一模一样的 共模电感的作用是为了抑制共模信号 抑制共模信号工作原理 http://【共模电感是如何抑制共模信号的】https…

SpringCloud - 微服务

1、微服务介绍 参考&#xff1a; 微服务百度百科 1.1 概念 微服务&#xff08;或称微服务架构&#xff09;是一种云原生架构方法&#xff0c;在单个应用中包含众多松散耦合且可单独部署的小型组件或服务。 这些服务通常拥有自己的技术栈&#xff0c;包括数据库和数据管理模型&…