Android面试反思:开发5年crud背景,惨遭字节阿里双挂,全败在了工作之外的技术点盘问(1)

本文介绍了作者作为Android高级工程师的经验,涵盖了项目中遇到的问题、技术栈如HTTP2.0、设计模式、MQTT、Android基础知识、Java和Kotlin技术、网络通信、数据库等,以及面试中涉及的内容和学习建议。作者强调了系统学习和理解企业需求的重要性。
摘要由CSDN通过智能技术生成
  • 介绍做过的项目 处理过哪些问题

  • http2.0什么特性 有哪些问题

  • 设计模式了解多少 讲一下装饰模式

  • MQTT协议解决了哪些问题 为什么

  • flutter了解多少

  • 平时都通过哪些方式学习和了解技术的

  • 都有了解其他哪方面的技术

  • 在最近的项目中学到了什么

  • 职业发展方向

  • 对于这项工作你有什么优势

中间废话有点多 面试官有点不耐烦 说尽量讲的简单些

第三天就收到邮件感谢了 -。-

阿里整体的面试难度不算太离谱,可能刚好都是比较擅长的,但面试周期较长,面到三面的时候已经多半个月了,有点力不从心;也有自己没有准备好的原因,有点懈怠了,三面问的问题大白话的偏多,奈何本人嘴笨,血压逐渐拉满,不过也算没有遗憾,深知能力有限,就酱吧~

整理了下其他面试中都涉及过的问题


网络

http请求、tcp握手回收、MQTT相关

数据结构

树、链表

Java

  • GC、Collection、Map

  • 多态

  • 多线程、各种锁机制

Android

  • 性能优化、ANR、内存泄漏

  • Activity启动模式、启动流程

  • 四大组件

  • Hanlder机制、事件分发、绘制流程

  • MVP、MVVM、插件化(hook)

  • 跨进程通信、aidl、广播、ContentProvider

  • okhttp、retrofit、glide、eventbus底层原理

Kotlin

  • kotlin反射、kotlin泛型

  • 协成原理 await、async区别

  • lateinit和by lazy区别

很多技术细节,工作中用不太到,但是面试不得不去准备,还是要把基础打牢固,下面就分享一些我梳理的一些Android基础相关知识:

关于一些基础知识的梳理


Java基础:

1.ArrayList、Linkedlist、Vector

2.BlockingQueue、CountDownLatch

3.Collections、Arrays

4.Exception与Error包结构,OOM,SOF的各种情况

5.HashCode作用

6.Java1.7、1.8新特性

7.Java NIO

8.Java基本数据类型以及相关操作

9.Java的四种引用,强弱软虚,用到的场景

10.Map、Set、List、Queue、Stack的特点与用法

11.Map相关子类区别

12.Object共有方法以及wait和sleep区别

13.Override与Overload区别

14.String相关内容学习

15.foreach与for循环效率对比

16.interface与abstract类的区别

17.static关键字

18.synchronized、lock、reentrantLock区别

19.不同清醒下return与finally的执行顺序

20.transient、volatile

21.反射原理及应用

22.反省特点以及类型转换

23.生产者消费者问题的五中实现

24.县城以及ThreadLocal

25.线程池的使用

26.解析XML的DOM与SAX以及PULL区别

27.锁的等级:方法锁、对象锁、类锁

28.面向对象的特征和含义以及多态实现原理

Android:

1.在AS中定义Gradle插件

2.Activity与Fragment生命周期

3.Activity卡顿原因

4.Activity启动过程

5.Activity四种启动模式与IntentFilter匹配规则

6.Activity的状态保存

7.Android5.0、6.0、7.0、8.0、9.0、10.0特性

8.Android内存优化方法

9.Android动画

10.Android文件缓存方法

11.Android长连接,怎么处理心跳机制

12.Asset与raw,res、drawable

13.AsyncTask原理与使用

14.Bitmap相关

15.ContentProvide用法

16.IntentService

17.Json相比XML优劣势,protobuf

18.Looper、Handler、MessageQueue

19.Merge与ViewStub布局标签

20.OkHttp原理解析

21.Service相关

22.Sqlite基本操作

23.UIL原理解析

24.Volley原理解析

25.Zygote进程启动过程

26.启动Activity的集中方式

27.如何保证Service不被kill

28.如何加速启动Activity

29.怎样退出终止App

30.插件化原理

31.注册广播的两种方式

32.热补丁技术概括

33.自定义View(所有View知识)

34.通过自定义Gradle插件修改编译后的class文件

数据结构:

1.各种排序算法复杂度对比

2.排序算法

3.数据结构基本概念及复杂度分析

操作系统:

1.IPC集中通信方式

2.什么是虚拟内存

3.死锁的必要条件,怎么处理死锁

4.段储存、页储存、段页储存

5.虚拟地址、逻辑地址、线性地址、物理地址的区别

6.进程与县城

7.银行家算法

计算机网络:

1.3次握手和4次挥手过程

2.HTTP响应报文格式及各种响应吗

3.HTTP请求报文格式

4.Http1.1和Http1.0区别

5.Http怎么处理长连接

6.IP地址分类

7.OSI与TCP\IP各层的结构与功能

8.Ping的整个过程。ICMP报文是什么

9.TCP与UDP区别以及各自优缺点

10.TCP和UDP数据报文格式

11.TCP拥塞控制和流量控制

12.http与https区别

13.打开一个网页,整个过程使用到哪些协议

14.滑动窗口与回退N针协议

15.路由器与交换机区别

数据库:

1.关系数据库基本概念

2.关系模式的规范化

3.函数依赖与候选码的定义

4.数据库中数据查询

5.数据库查询优化

6.数据的添加、删除、修改

7.表的创建、修改表结构、删除表

JVM:

1.CAS是什么

2.GC收集器有哪些

3.GC的三种收集方法

4.内存模型以及分区

5.判断一个对象是否存活

6.双亲委派模型

7.对象的创建、内存布局、对象的访问定义

8.新生代老年代内存划分比例以及其各自特点

9.类加载的五个过程

10.静态分派和动态分派

面试前系统复习的重要性


很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我针对Android程序员,我这边给大家整理了一套学习宝典

  • Android学习路线图

首先,对于没有学习方向,知识不体系的人,我把我工作几年整理的学习路线分享给大家,做一个借鉴作用,还不知道怎么学习的人可以直接照着我这个学习路线一个个的去学习,知识不体系的人可以参考下我整理路线的方式,总之希望能够帮到你们!

  • 模块化学习资源

接下来是每个模块我整理出来的文档学习资料,帮助大家更细致化的学习。

《Android汇总复习资料—Java》

《Android汇总复习资料—Android》

《Android汇总复习资料—Android扩展》

《Android汇总复习资料—Kotlin》

《Android汇总复习资料—Flutter》

《Android汇总复习资料—算法》

除了上面的学习路线,还可以额外的配合以下方式学习,效果翻倍~

①看视频进行系统学习

前几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。

另外,我自己也珍藏了好几套视频,有需要的我也可以分享给你。

②读源码,看实战笔记,学习大神思路

“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。

主要内含微信 MMKV 源码、AsyncTask 源码、Volley 源码、Retrofit源码、OkHttp 源码等等。

文末

初级工程师拿到需求会直接开始做,然后做着做着发现有问题了,要么技术实现不了,要么逻辑有问题。

而高级工程师拿到需求会考虑很多,技术的可行性?对现有业务有没有帮助?对现有技术架构的影响?扩展性如何?等等…之后才会再进行设计编码阶段。

而现在随着跨平台开发,混合式开发,前端开发之类的热门,Android开发者需要学习和掌握的技术也在不断的增加。

通过和一些行业里的朋友交流讨论,以及参考现在大厂面试的要求。我们花了差不多一个月时间整理出了这份Android高级工程师需要掌握的所有知识体系。你可以看下掌握了多少。

混合式开发,微信小程序。都是得学会并且熟练的

这些是Android相关技术的内核,还有Java进阶

高级进阶必备的一些技术。像移动开发架构项目实战等

Android前沿技术;包括了组件化,热升级和热修复,以及各种架构跟框架的详细技术体系

以上即是我们整理的Android高级工程师需要掌握的技术体系了。可能很多朋友觉得很多技术自己都会了,只是一些新的技术不清楚而已。应该没什么太大的问题。

而这恰恰是问题所在!为什么别人高级工程师能年限突破30万,而你只有十几万呢?

就因为你只需补充你自己认为需要的,但并不知道企业需要的。这个就特别容易造成差距。因为你的技术体系并不系统,是零碎的,散乱的。那么你凭什么突破30万年薪呢?

我这些话比较直接,可能会戳到一些人的玻璃心,但是我知道肯定会对一些人起到点醒的效果的。而但凡只要有人因为我的这份高级系统大纲以及这些话找到了方向,并且付出行动去提升自我,为了成功变得更加努力。那么我做的这些就都有了意义。

喜欢的话请帮忙转发点赞一下能让更多有需要的人看到吧。谢谢!

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
以及各种架构跟框架的详细技术体系

[外链图片转存中…(img-ckcnQdM2-1714877360838)]

以上即是我们整理的Android高级工程师需要掌握的技术体系了。可能很多朋友觉得很多技术自己都会了,只是一些新的技术不清楚而已。应该没什么太大的问题。

而这恰恰是问题所在!为什么别人高级工程师能年限突破30万,而你只有十几万呢?

就因为你只需补充你自己认为需要的,但并不知道企业需要的。这个就特别容易造成差距。因为你的技术体系并不系统,是零碎的,散乱的。那么你凭什么突破30万年薪呢?

我这些话比较直接,可能会戳到一些人的玻璃心,但是我知道肯定会对一些人起到点醒的效果的。而但凡只要有人因为我的这份高级系统大纲以及这些话找到了方向,并且付出行动去提升自我,为了成功变得更加努力。那么我做的这些就都有了意义。

喜欢的话请帮忙转发点赞一下能让更多有需要的人看到吧。谢谢!

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值