三年 Android 开发的技术人生,浅谈自身面试的感悟

news2024/11/25 20:31:45

文章素材来源于网友

本篇主要记录了一个 Android 菜瓜三年的面试之旅,希望对大家面试、跳槽有所帮助。

一些唠叨

从进入这行开始,就是听说Android端凉了,寒冬这又如何那又如何的事情,很多的风言风语缠绕着这个圈子。但是老弟觉得并不是,只是单纯的过度饱和了,市场对一个Android开发工程师的要求更加严格,不再是普通的螺丝钉。凭借大多数人的努力程度,那用得着拼其他东西。

面试造🚀?

对与不对?不为人知,有人曾经目睹火箭全貌并加以口述,有人却未曾到达这片领域。面向深度开发工程师与面向Api调用师,差距很小也很大。

因为热爱,所以才有了一系列开始。

成长的个人背景

2017年普通本科毕业,今年,考上了湘潭大学非全日制的研究生,预计2021年底拿证。

毕业时,好不容易在上家公司去年开始实习并转正,担任Android端独立开发,当然做的事也比较多。成长的三年当过一些小项目的负责人,也调研一些业界常见的方案,比如双因子登录,直播全流程,开发人力成本模型等等。

抬头看天

其实在老东家(项目型公司)呆了一年后,也开始逐渐规划一些方向,比如未来3年要达到的高度。于是,我本次的目标是:

Toc、产品和有技术深度的公司

低头看地

学历和算法

前者很伤,因为只是普通本科的学历,再加上我自身明白自己对技术深入的不足,需要渡过很长阶段的提升期(反向证明我是个菜瓜),所以短时间我肯定不考虑互联网大厂的面试。(除非拿到了研究生的证,当然这也只是提高了面试成功的几率,自带B数勿喷)

后者也挺伤,不过现阶段的Android面试,基础算法应该问题不大(后面被打脸了),不过也得花点时间再刷题;

目前相比其他同阶段开发者优势劣势在哪里,相比2-3年经验的开发者呢,有什么闪光点可以使我超越这帮人呢?

1-5年中小公司常见题(个人——部分总结)

面试官主要还是根据你简历去问,以下主要做一个简单的部分总结。不过这些年我把我自己面试过的题目都汇总成了Android 知识点,需要面试、阅读的朋友可以去我的 Github地址:https://github.com/733gh/Android-T3 访阅。

java

  • gc回收机制
  • 多线程,synchronized 与 volatile
  • 类加载相关
  • hashmap原理,arraylist等等
  • java内存区域
  • 静态代理与动态代理区别

Android

  • 性能优化,内存泄漏治理,启动优化,包体积优化
  • 四大组件(不涉及原理),是的,依然有公司问,基础很简单,重要是细节
  • 进程间通信方式,及部分原理
  • 事件分发机制与事件冲突处理
  • 热修复与相应第三方实现原理(如tinker)
  • handler
  • view流程(涉及相应方法内部源码)
  • Activity,windows,view关系
  • 组件化与模块化

三方库

  • Retrofit与Okhttp
  • Glide

JetPack

  • lifecycle- 原理及为什么要存在它的背景
  • ViewModel与LiveData

Kotlin

  • 协程与其他第三方线程框架区别
  • kotlin和java你认为的不同
  • 相应的内联函数解释一下

网络协议

  • tcp/ip,http
  • 签名与证书

设计模式

  • 单例
  • 代理
  • 其他的基本遇到的很少,不过设计模式,日常用的东西

算法类

  • 二分
  • 快排
  • 二叉树
  • 链表

三年内—面过的一些公司

常青藤爸爸-卒

  • 电面
    • 聊做过的项目
    • 为什么要辞职
    • 为什么要选用组件化
    • 讲一下JetPack部分组件内部实现原理
  • 二面
    • 个人简介
    • 聊项目组件化,画一下你的框架图,讲一下具体注意事项
    • 说说MVP和MVVM
    • 手写 算法-二分查找

原因: 二分查找没写出来,对你没有看错,真的给没写出来,当场差点给老弟哭了。


MetaApp-卒

  • 笔试题
    • 大数相加。(禁止使用bigxxx,String长度可能超过long)
    • 两个String字符串除重,确保顺序不变
    • 上述的解法,算法复杂度是多少,有没有达到O(n),没有请实现一个?

原因:大数相加写的很失败。


阶段小总结

老弟算法差到离谱,于是痛定沉思,刷刷算法题,真的是丢人,排序算法,二叉树等等。


新氧科技-卒

  • 一面
    • 聊项目
    • 聊组件化,为什么要用组件化,背景,组件到的依赖问题
    • 聊聊JetPack
    • 项目中用过哪些性能优化说一下?
    • 说一下你是如何做包大小治理的
    • 说一下你的性能优化具体做了啥?
    • 说说SparseArray和HashMap区别,内部实现?
    • 说说为什么CoordLayout为啥比RelayoutLayout效率高,内部实现?
    • 当LinearLayout和CoordLayout相同情况下,优先使用谁,为什么?
  • 二面
    • 聊聊你在上家公司做了什么
    • 聊聊你为什么要辞职
    • 聊聊你的项目
    • 说一下你知道的基本数据结构
    • 说一下常见排序算法
    • 说一下快速排序的原理
    • 你还有什么想问的吗

原因:技术VP觉得工作年限不足,可能是安慰吧。


未来花朵-婉拒

  • 一面
    • 讲讲你的项目
    • 说一下你是如何做包大小治理的
    • 讲一下你对Handler的理解
    • 讲一下view绘制流程
  • 二面
    • 讲讲你再上家公司干了什么
    • 讲讲你为什么要辞职
    • 聊聊你的项目
    • 对直播一些问题的解释
    • 讲讲kotlin和协程

原因:是一家创业的小公司,在二面中发现面试官技术深度欠缺,与我职业规划有点差异。


7k7k-婉拒

  • 一面
    • 讲讲Android四大组件
    • 说一下编译版本,最低版本,最高版本的区别
    • 说一下Android各版本差异
    • 说一下服务
  • 二面
    • Java基础考察主要
    • Java多线程相关
    • 两个栈实现队列
    • 二叉树的遍历方式
    • 一个8个石头,一个天平称重,其中一个石头较重,求最快几步(穷举)

原因:面试得还不错,同样,这家也是独立开发,他们的擅长是做游戏,于是婉言谢辞。


彬彬有礼-卒

  • 一面
    • 讲讲你负责的项目
    • 说说Android事件分发机制,及dispatchEvent方法内部做了什么?
    • 说一下Retrofit,和Okhttp的区别
    • 说一下glide如何加载指定个数此gif图
    • 说一下内存泄漏常见的场景,及你如何处理一般
  • 二面
    • 讲讲为什么要离职
    • 说一下Flutter?
    • 你都了解哪些设计模式,讲一下
    • 。。。

原因:应该是音视频不怎么了解导致,这家需要音视频比较了解的小伙伴。


阶段小总结

老弟对JVM基础了解还差点,简单点来说,背的不熟练,比如Java内存区域这些基础东西,需要看看。


一下科技-卒(hc满了)

  • 一面
    • 讲一下热修复的原理
    • 说一下Java的内存模型及Gc的回收机制
    • 谈一下你项目中用到的IM
    • 简述一下 一个流式布局整体的写法,比如onMeasure和onLayout中做了什么
    • 说一下xml中的布局如何转化为代码
    • 说一下ArrayList和LinkeList区别及实现原理
    • 说一下换肤的原理,讲一下如何动态配置换肤的资源包
    • 说一下你做过的内存优化有哪些?
    • 说一下包大小治理方面你做了什么?
  • 二面
    • 说一下你认为的组件化与模块化的不同?
    • 说一下TCP三次握手
    • 除了Retrofit,还用过其他网络框架吗,说一下区别
    • 看过OkHttp源码吗,说一下原理
    • 讲一下你对Handler的理解,不要涉及源码
    • 说一下音视频相关的,比如直播的流程
    • 说一下你了解的设计模式
  • 三面(Hr)
    • 说一下你为什么要离职
    • 谈谈一些想法
    • 以一个非技术角度给我讲一下冒泡排序
    • 说一下TCP三次握手的原因是什么?
    • 说一下你对二叉树掌握多少
    • 说一下常用的排序算法及复杂度和原理
  • 四面(交叉面)电面
    • 谈谈你做过的项目
    • 说一下你做过的性能优化有哪些
    • 你还有什么要问的吗

原因:1,2面聊得都不错,能看出来技术深度不错,3面Hr一上来就问三次握手,老弟有点吃惊,看得出来这个HR有点意思。总体氛围也不错,4面结束,面试官说成了,等人事电话,最后等来了HC满了,也就意思是你被当备胎了。


壳壳互联-卒

  • 一面

    • 稀奇古怪聊了很多

    • 如果让你采用Linux开发,你会同意吗?

    • 最后选答题-app随机拿的:

      1. 知乎App的会员页设计你会考虑什么,都有哪些view,需要注意什么?

      2. 知乎App的我的-上半部分卡片栏你会如何设计?

      3. 如果让你设计一款知乎App,它的架构你如何选择?

        上述问题有10,15,20分钟,选择一个开始作答。

        选了3,组件化结构,最后结合知乎画了一个粗略的框架图

总结:面试官人不错,注重发散性思维,看着你自己的想法,如果不了解某个原理,就讲自己的看法,无关对错。

乐我无限-卒

  • 一面
    • 具体忘了,聊了1个小时

硬核聚视-卒

  • 一面面试官不讲武德,吊的没法了,你说什么,都说你不对,你问他原因吧,就说你自己回去找;
  • 问我为啥选择移动开发,我说开始是因为热爱,来了一句,你和没说有啥区别,硬忍着面完了;
  • 一顿c++的问,我是移动开发,好家伙,我是面错岗位了吗?

补充,一面是高级面我,二面是Leader面,二面感觉很好,现在知道为啥一面当不了Leader了?30多了还不讲武德,还是算了吧,怪我太菜。

莱特摩比-卒

  • 一面
    • 了解过蓝牙吗,你认为它属于四大组件中那一个
    • 使用ping命令如何计算当前已连接wifi下有多少个设备,如何获取?
    • 其他问题忘了,都很简单
  • 二面
    • 整体对面试官印象并不是很好

总结:这是一家创业公司(996),是做游戏+app工具,技术栈并不深厚,二面Leader没有平易近人的那种感觉,慎重吧

奇天乐地-拒

怎么说呢,不讲武德,虽然说做sdk开发,典型的套壳app,技术提升毫无帮助。

试用7天,无工资,如果通过就包含工资,试用期三个月,第一个月不上一金。

就这条约,招两个人,原因几何呢,心里没点数了,面试官还透漏老板脾气不好,好家伙,这种公司去了完全是放弃自己,看不到任何技术发展。

美兰德-拒

  • 笔试

    先笔试题4张,Java基础+Android基础

  • 一面

    • 技术问题聊得很少,并不适合

阶段小总结

也是瞎投简历了,有些跑过去浪费了彼此时间,这点得给自己扇一巴掌。

章鱼科技-卒

  • 一面

    面试官应该Android新手,聊问题时,小小的眼睛大大的疑惑

  • 二面

    • 说一下Http和Tcpip
    • Tcp为什么要三次握手,如何保证握手后就一定没问题
    • 给你两个链表节点,判断这两个链表是否相交
    • 给你一个数组,反序返回出来

总结:做智能硬件的公司,其他没什么感受

少年得道-70%卒

  • 一面

    • 说一下项目中遇到的问题,你怎么解决
    • 说说gc回收机制,怎么回收的流程
    • 说一下app启动流程
    • 说一下内存泄漏的原因和场景
    • 说一下你都做过的内存优化
    • 说一下你怎么做启动优化的
    • 说一下activity,winodws,view三者之间关系
    • 说一下activity转屏后的生命周期变化,及如何避免生命周期改变
    • 说一下你了解的插件化,谈一下为什么要有插件化,需要解决那些技术问题
    • 说一下tinker内部怎么实现
    • 说一下hashMap实现原理
    • 了解过ConcurrentHashMap,说一下原理

    面试官很善谈,对于一个问题,如果你不了解原理,会让你自己想象如何去设计这样的一个组件,发散性思维

总结:一家做K12教育的公司,氛围不错,一面中有些原理没答的太好,比如tinker和插件化相关。

iRigel-70%卒

  • 视频面

    引言:我是看你博客过来的,你博客的你还记住多少,我就随便问了哈

    • 你最近看了setContentView源码,你能讲讲吗
    • 说一下你了解的事件分发机制?
    • 我看你面试记录里没写出二分查找,现在也实现了,那你能用非计算机语言描述二分查找吗?
    • 你说一下 你对于 O(logn) 复杂度的理解?
    • 其他问题没记住。。。

总结:面试官非常好,注重解决问题的思维能力。

推荐

2023年Android最新面试题:https://qr18.cn/CgxrRy
Android 音视频面试题:https://qr18.cn/AcV6Ap
车载Android 开发面试题:https://qr18.cn/FTlyCJ
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电商系统架构设计系列(三):关于「订单系统」有哪些问题是要特别考虑的?

订单系统是整个电商系统中最重要的一个子系统,订单数据也就是电商企业最重要的数据资产。 上篇文章中,我给你留了一个思考题:当系统在创建和更新订单时,如何保证数据准确无误呢? 今天这篇文章,主要聊一下&…

DM8:达梦数据库开启SQL日志sqllog

DM8:达梦数据库开启SQL日志sqllog 环境介绍1 修改配置文件sqllog.ini2 开启与关闭 DMSQLLOG2.1 开启 sql 日志记录功能2.2 查询 sql 日志记录是否开启:0 关闭,1/2/3开启);2.3 关闭 sql 日志记录功能 3 sqllog.ini 详细介绍4 更多达梦数据库使用经验总结 …

辅助驾驶功能开发-功能算法篇(3)-ACC-弯道速度辅助

1、功能架构:ACC弯道速度辅助(CSA) 2、CSA功能控制 2.1 要求 2.1.1 CSA ASM:弯道速度辅助 1. 模式管理器:驾驶员应能够激活/关闭功能 应存在处理 CSA 功能的模式管理器。模式管理器由驾驶员输入和系统状态控制。 模式管理器有两个由 CSAStatus 定义的状态。状态转换定义…

ubuntu 系统解决GitHub无法访问问题

先后试了网上两个教程,终于解决。通过修改host文件实现访问。 教程1: 1)终端输入: sudo gedit /etc/hosts 打开hosts文件; 2)使用ip查找工具查询 http://github.com和IP:http://github.global.ssl.fastly.net的ip地址并添加到hosts文件末尾; 3)关掉hosts文件,在终端…

HTTPS协议-保障数据安全【安全篇】

我们都知道由于HTTP是明文的,整个传输过程完全透明,任何人都能够在链路中监听、修改、伪造请求/响应报文。所以不能满足我们的安全要求。比我如我们上网的信息会被轻易的截获,所浏览的网站真实性也无法验证。黑客可以伪装成银行、购物网站来盗…

接口测试常见接口类型?

常见接口类型 1.根据协议区分 1、webService接口:是走soap协议通过http传输请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。可以使用的工具有Soapul、jmeter、loadrunner等; 2、http接口:是走http协议,…

Vue向pdf文件中添加二维码

这两天刚看到一个需求,简单描述一下,就是我们拿到一个pdf文件流(文件流可以是后端返回的,也可以是从自己本地选的)和一个url链接 ,现在要将url链接生成二维码,并将这个二维码添加到这个pdf文件中…

一元线性回归分析

一元线性回归分析: (1)假设X与Y有线性相关关系,求Y与X样本回归直线方程,并求 的无偏估计; (2)检验Y和X之间的线性关系是否显著(α0.05); (3)当Xx0…

通过电脑屏幕传输文件

简介 本文介绍一套用于通过屏幕传输文件信息的软件。 通过屏幕传输文件,即非接触式,非插入式传递文件,是除了常用的网络传输,硬盘类介质拷贝之外的文件信息传输方式,基本原理就是将待传输的文件转换为二维码&#xf…

SkipList(跳表)

基本概述 SkipList(跳表)首先是链表,但与传统链表相比有几点差异: 元素按照升序排列存储节点可能包含多个指针,指针跨度不同【根据元素个数不同,可以建立多级指针(最多可以建立32级指针&#…

liunx优化命令之free命令

free 这里写目录标题 一、free命令描述:1.free命令的语法:2.free命令的选项:3.free命令的输出格式: 二、压力测试工具stress:1.工具简介:2.参数详解:3.下载压力测试工具: 三、模拟实…

基于51单片机设计的红外遥控器

一、项目介绍 遥控器是现代生活中必不可少的电子产品之一,目前市面上的遥控器种类繁多,应用范围广泛。而 NEC 红外遥控器协议则是目前应用最为广泛的一种协议之一,几乎所有的电视、空调等家用电器都支持该协议。 本项目是基于 51 单片机设计支持 NEC 协议的红外遥控器,实…

TPU-MLIR的环境搭建和使用

1、开发环境配置 Linux开发环境 一台安装了Ubuntu16.04/18.04/20.04的x86主机&#xff0c;运行内存建议12GB以上下载SophonSDK开发包(v23.03.01) &#xff08;1&#xff09;解压缩SDK包 sudo apt-get install p7zip sudo apt-get install p7zip-full 7z x Release_<date&…

docker数据管理---数据卷,数据卷容器

在Docker中&#xff0c;数据卷&#xff08;data volumes&#xff09;和数据卷容器&#xff08;data volume containers&#xff09;是用于在容器之间共享和持久化数据的两种不同的机制。 一、数据卷 数据卷是一个特殊的目录或目录&#xff0c;可以绕过容器文件系统的常规层&a…

CSDN 周赛 58 期

CSDN 周赛 58 期 前言1、题目名称&#xff1a;打家劫舍2、题目名称&#xff1a;小Q的鲜榨柠檬汁3、题目名称&#xff1a;收件邮箱4、题目名称&#xff1a;莫名其妙的键盘后记 前言 很多人都知道&#xff0c;CSDN 周赛的题目出自每日一练&#xff0c;甚至连用例都不会变动&…

【一起啃书】《机器学习》第九章 聚类

文章目录 第九章 聚类9.1 聚类任务9.2 性能度量9.2.1 外部指标9.2.2 内部指标 9.3 距离计算9.3.1 欧氏距离9.3.2 曼哈顿距离9.3.3 切比雪夫距离9.3.4 闵可夫斯基距离9.3.5 标准化的欧几里得距离9.3.6 马氏距离9.3.7 兰氏距离9.3.8 余弦距离9.3.9 汉明距离9.3.10 编辑距离 9.4 原…

替换CentOS 6.x系统中 X11图形界面的启动logo

这个属于定制一个系统的logo了。 网上有很多方法&#xff0c;直接修改一个是最简单的了。 看操作&#xff1a; 下载CentOS 的主题&#xff0c;网上自己搜一个喜欢的就行了。 [rootlocalhost Downloads]# tar zxvf vizta-use-it.tar.gz [rootlocalhost Downloads]# cd vizta …

目标检测数据集:红外图像弱小飞机目标检测数据集

✨✨✨✨✨✨目标检测数据集✨✨✨✨✨✨ 本专栏提供各种场景的数据集,主要聚焦:工业缺陷检测数据集、小目标数据集、遥感数据集、红外小目标数据集,该专栏的数据集会在多个专栏进行验证,在多个数据集进行验证mAP涨点明显,尤其是小目标、遮挡物精度提升明显的数据集会在该…

ArduPilot开源代码之AP_VideoTX

ArduPilot开源代码之AP_VideoTX 1. 源由2. AP_VideoTX子模块2.1 AP_VideoTX2.1.1 AP_VideoTX::init2.1.1 AP_VideoTX::update 2.2 AP_Tramp2.2.1 AP_Tramp::init2.2.2 AP_Tramp::update2.2.3 AP_Tramp::process_requests 2.3 AP_SmartAudio2.3.1 AP_SmartAudio::init2.3.2 AP_S…

requests库的使用

文章目录 get 请求post 请求get 请求和 post 请求的区别response1. res.headers2. status_code3. json get 请求 参数类型作用urlstr发起请求的地址params字典url为基准地址&#xff0c;不包含查询参数&#xff1b;使用此参数会自动对 params 字典编码&#xff0c;然后和url拼…