我的2020Android开发岗面经分享,在5面字节后结束我的求职生涯......

2024-02-19 00:10

本文主要是介绍我的2020Android开发岗面经分享,在5面字节后结束我的求职生涯......,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

都挺好

很多人挤破脑袋,破釜沉舟的想进大厂的根本原因还是大厂和小公司真的不一样。我是双非本科15年毕业的,毕业之后就一直在做Android相关方面的开发工作,到18年经历了两家创业公司,一家工作了不到半年老板就跑路了,一家工作到18年初,因为运营不当倒闭了(一度怀疑自己是不是去哪家公司就得哪家倒闭)。

在小公司做开发,一个同时开发几个app也是比较常见的,而且公司的代码和项目管理都非常的不规范,一些祖传代码能让你一些白了头。诸多因素综合下来更加坚定了我奔大厂的决心,提升技术能力也好,镀金也罢,又或是开篇说的一种能力的见证,在今年5月份我毅然决然的选择了裸辞,开始我的奔大厂之路。

至6月结束,面完了网易、oppo、拼多多、滴滴、优酷、蘑菇街,结果都是凉凉(内心还是很虚的,所以先找了些规模偏小的大厂下手)。总体的一个感觉就是,感觉面试官问的感觉都会,但是就是卡在喉咙里面说不出来,问到一些底层,源码,方面的东西,更是脑子一片空白,有个面试官甚至反问我,“你之前的16k是怎么拿到的?”。 准备还是太不充分了,突然意识到,随后在7月份开始降低了面试的频率,开始复习,从java基础到底层源码,该背的背,该写的写, 并在每次面试之后记录下面试官的问题,回去做复盘和延伸,实践出真知。

汗水+坚持+方法=成功

不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。不论是笔试还是面试都是有章可循的,我这个“有章可循”说的意思只是说应对技术面试是可以提前准备。 我其实特别不喜欢那种临近考试就提前背啊记啊各种题的行为,非常反对!我觉得这种方法特别极端,而且在稍有一点经验的面试官面前是根本没有用的。建议大家还是一步一个脚印踏踏实实地走。


建议寻找大厂方式
1.关注大厂官网,随时投递简历(走流程的网申);
2.线下参加宣讲会,直接投递简历;
3.找到师兄师姐/认识的人,帮忙内推(能够让你避开网申简历筛选,笔试筛选,还是挺不错的,不过也还是需要你的简历够棒);
4.博客发文被看中/Github 优秀开源项目作者,大厂内部人员邀请你面试;
5.求职类网站投递简历(不是太推荐,适合海投);

除了这些方法,我也遇到过这样的经历:有些大公司的一些部门可能暂时没招够
人,然后如果你的亲戚或者朋友刚好在这个公司,而你正好又在寻求 offer,那
么面试机会基本上是有了,而且这种面试的难度好像一般还普遍比其他正规面试低很多。
学习+复习

  • 笔试

很早就了解了互联网公司面试必考,也是一个程序员必备的内功,我的算法水平也就是刚及格的水平,肯定是不能达到面试所需的水平的,于是便开始有计划的在LeetCode上刷题,一开始是计划每天刷8道Easy难度的题,后来越刷越熟练后便每天刷4道Medium和4道Easy,然后转变为每天刷4~6道Medium。虽然不能说马上掌握全部,但是成果还是很不错的。

  • 手写代码

因为在面试过程中,面试官可能会要求你手写代码(根据我自己的经历来看,这个概率差不多是50%,要看不同的公司和面试官的喜好)。根据我的总结,认为手写代码有这么几个特点:

  1. 难度相比笔试难度较为简单。
  2. 由于是手写,与在键盘上敲代码有非常大的不同,有可能你在键盘上敲得飞起,但是你在纸上却一行都写不出来。
  3. 形式较为灵活,在没有思路时可以与面试官交流,就算最终没有写出来,你的思路得到面试官认可也是可以通过面试的。

针对这个环节,我准备了一本书,就是大名鼎鼎的 【剑指Offer】(必读!!!点击获取,学习书籍+视频+面试合集)。

  • 面试问题准备

Android 基础知识

  • Activity
  • Service
  • Broadcast
  • Receiver
  • ContentProvider
  • Intent
  • Fragment

Java 面试题

  • Java 基础
  • Java 中的设计模式

Android 高级

  • Android 性能优化
  • Android 屏幕适配AIDL
  • Android 中的事件处理
  • Android 中的动画
  • ContentObserver
  • 内容观察者作用及特点
  • 项目框架的使用

自我介绍

  • 开发中都使用过哪些框架、平台

  • 都使用过哪些自定义控件项目的流程

  • 项目中常见的问题

  • 即时通讯是是怎么做的常见框架分析
    Flutter 相关面试题全解析

  • Dart 部份

  • Flutter 部份

面试题以及解析,我都做了一个整理

需要的可以点击我的【GitHub】获取!免费分享!希望能用你的鼠标点个赞,给个小小的支持,更文不易,谢谢大家阅读!


其中包括了有基础知识、Java集合、JVM、多线程并发、 Handler、Activity相关、Fragment、service、布局优化、AsyncTask相关、设计模式、Android 事件分发机制、 Binder、Android 高级必备 :AMS,WMS,PMS、Glide、 Android 组件化与插件化等面试题和技术栈!已经帮很多人拿下互联网一线公司的offer。共有31个知识点。

面试详细过程

一面

1.StringBuilder、StringBuffer的区别,为什么StringBuffer快一点,看过这两个的源码没有,线程安全是怎么实现的?
2.LRUCatch的原理实现。
3.一些排序算法的时间复杂度:冒泡、快速排序。
4.try。。。catch。。。finally 问了个通过 exit()退出程序 会不会执行finally?
5.Java容器,set map的区别。
6.TCP UDP区别
7.设计模式,主要问了工厂模式的几种情况。
8.讲一下Java内存模型 局部变量存放在哪
9.讲一下引用传递
10.讲讲Handler机制。解释发送一条消息会经过哪些过程。问了我Handler源码看到哪一层(看到了Java)。Handler创建好以后怎么才能关联到他所在的线程?(这个回答的不是很好,感觉是在Handler的构造方法里关联的?),问了要传进什么参数?
11.ListView的VIewHolder为什么可以减少内存的使用?
12.多线程相关。Java中控制多线程的方法。锁、synchronize(可以对哪些对象加锁(静态变量加锁和对普通变量加锁有什么区别),实现原理)、wait notify
13.ANR。在广播内做耗时操作会怎么样。

二面

1、项目相关;
2、Handler机制,线程如何开启消息循环;
3、px、dp、sp,dp和sp的区别;
4、Java中内存分区,分别什么作用;
5、Java中的Error和Exception;
6、Java中的双亲委派模型;
7、Android app的打包流程,各种文件分别如何处理;
8、Java中面向对象设计原则;
9、图像处理的相关原理,裁剪、旋转、缩放等(项目相关);
10、Android中如何自定义view;
11、Android中的动画类别,插值器和估值器;
12、反问。

三面

0、项目相关;
1、Android中超时重传中关于流量和省电的优化(项目相关);
2、线程和进程区别;
3、死锁及解决方式;
4、Handler可以绑定多个Looper吗,如何判断Looper.myLooper获取得到的是当前的Looper、ThreadLocal;
5、TCP三次握手和四次挥手;
6、HTTP和HTTPS,及HTTPS加密过程,数字证书如何认证,常用的数字加密算法有哪些,中间人攻击;
7、GET和POST区别;
8、HTTP1.1、HTTP1.2、HTTP2.0区别;
9、CAS、synchronized、synchronized修饰方法和修饰静态方法有什么区别、乐观锁和悲观锁;
10、HashMap内部机制;
11、Binder机制;
12、一个数组,除了一个数只出现过一次,其他都出现两次,请找出这个数;
13、如何学习安卓的;
14、反问。

四面

0、自我介绍
1、handler机制,sendMessage和post(Runnable)的区别。
2、ThreadLocal原理,底层实现这一块最开始没答得很好,所以这两天总结了一下,通过源码进行了分析
3、HashMap底层,扩容,LinkedHashMap
4、Service的onBind和onStart差别
5、Activity启动生命周期,A跳转B
6、Android持久化方案,SharedPreference是否可以跨进程通讯。ContentProvider
7、ClassLoader机制,双亲委派。如果我要写一个Activity类,那怎么保证加载的是我自己写的Activity
8、算法题,约瑟夫环
9、反问

五面

0、自我介绍
1、项目技术点详解
2、写过什么自定义View
3、OkHttp代码看过吗,用了什么设计模式
4、MVC、MVP区别,项目中的实现。
5、LiveData和EventBus的相关讨论,真的是讨论,畅所欲言
6、看过哪些源码
7、SharedPreference相关
8、Android动画了解吗,用过什么
9、TCP、UDP区别,面试时的语音用的是什么,为什么要这么用。
10、代码题,5个线程对一个int进行累加到1000.
11、反问

我还录制了一些视频,需要的可以,评论666,【点击这里获取】!

不负

功夫不负有心人,经过两个多月的学习提升和面试“实践”,趁着“金九银十”这股东风,在9月中旬拿到了字节的offer,除了自己的努力之外,可能还有一部分原因就是字节最近一直在扩大招聘吧(手动狗头),让我有了“趁虚而入”的机会。定薪25k,每天都有免费下午茶,还有不限量的零食自取,21点以后车费报销,996的“福报”我在程序员本命年拿到了(996+1024=2020)。

分享文章一直等到现在才写,一个原因是刚进公司没多久,自然要表现出对“福报”的感恩戴德,抽不出时间来再做总结分享。还有一个原因就是自己都不确定自己分享到底有没有价值或者是借鉴意义,到现在还一直感觉自己是以一种“幸运儿”的身份进来的,毕竟之前面试的大厂没有一个拿到offer的。不过也可能这就是传说中的“越努力越越幸运吧”!

这篇关于我的2020Android开发岗面经分享,在5面字节后结束我的求职生涯......的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/722892

相关文章

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Python虚拟环境与Conda使用指南分享

《Python虚拟环境与Conda使用指南分享》:本文主要介绍Python虚拟环境与Conda使用指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python 虚拟环境概述1.1 什么是虚拟环境1.2 为什么需要虚拟环境二、Python 内置的虚拟环境工具

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3