美文网首页Android开发Android开发经验谈Android技术知识
2020秋招知识点查漏补缺(预热期),大量高频大厂面试题集合(有

2020秋招知识点查漏补缺(预热期),大量高频大厂面试题集合(有

作者: e240c12aa0ad | 来源:发表于2020-07-10 16:32 被阅读0次

    前言

    之前因为一直在忙于秋招,也没有进行进一步的学习,一直都在复习已有的知识,寻找自己的不足,所以没有更新过博客,现在拿到了百度,猿辅导以及Keep的offer(百度已签),打算结束秋招了,然后就写一篇自己的秋招的经历,对自己秋招时光的一个总结,并且给以后的学弟学妹一点建议吧。

    自我介绍

    先介绍一下我吧,我是一个双非学校的应届生,但是我并不是从大学一开始的时候就是学习Android的,我大一到大三上学期都在搞ACM竞赛,一直到去年打完青岛现场赛才退役(苦逼的没有拿到牌,如果拿到了可能秋招之路就会好很多吧)。

    其实很多的ACMer在退役以后都会转入对算法岗的学习,在我面试的过程中也遇到过很多的面试官问过我这个问题。我个人不是特别想考研的,但是对与算法的学习可能还是需要借助研究生的实验室的资源,在本科可能我不能找到这种的资源,又因为我原来有学习过一点Android,所以我就转入了对Android的学习。

    所以可能因为没有学习多久的原因(之前一直在腾讯课堂上跟着学习),我在春招没有找到实习,当时的面试官都是对于我的算法和数据结构这块非常认同,但是对于技术或者说是项目希望我能更好的学习,于是我4-5月都一直在写我的一个小项目SHIN_Music音乐播放器,但是因为这件项目我错过后续的秋招。所以我暑假就只能在家里自己进行学习。在这里要感谢几位学长,对我的关心和指导,给了我很多的面试内推,以及面试的时候的一些建议。

    我投的所有公司(只多不少)

    我听从了学长的建议投了很多的公司,这样对于我们这种双非学校的学生进入大厂的机会才会多。

    image image

    这就是我投的简历,可以看到我有8个走完了所有的流程,但是为什么我现在只有3个Offer,原因很大是因为学校,也可以是说我的能力不能抵消掉学校上与其他人的距离。但是这也是无可厚非的,因为别人的学历是因为原来别人的认真学习的结果,这也是公平的。

    用原来我听到过的一句话:很多好的大学学计算机,并不是一开始就是教编程的,是先让你找到计算机的本质----计算。然后从底层开始学起,有可能在毕业的时候你就可以造出一台简单的计算机了。这就是我们和别人的区别。用人公司当然更加倾向与985,211的学生,就像我们倾向于BAT一样。

    我的建议(菜鸡的建议,大佬请绕路):

    • 对于秋招一定要把握好,因为秋招的标准会比较低

    • 一定要把基础知识打牢,因为这些是你在大学中学到的,更好的体现你的学习能力

    • 简历一定要真,并且面试之前回顾一遍简历

    • 一定要写一个稍微大一点的项目,这样你才能和面试官有共同话题,面试官才能找到你的优点

    • 多投简历,多积累面试经验,每次面试完以后对自己不会的东西进行查询记录

    • 学习新东西的时候,不断的回顾之前自己会的东西

    • 一定要打有准备的仗。

    我的经验

    主要是下面几块的复习和准备:

    自我介绍

    自我介绍这种东西最好还是能够准备一下,因为你有准备的话,你才能够在面试的前一分钟更好的展现出自己,给自己有调节情绪的时间,如果当场想的话,可能就会很匆忙。

    先看下我的自我介绍吧(PS:虽然不是很好,但是也展现了我的几个优势)

    本人热情随和,具有进取精神和团队精神,擅长动手,有比较强的动手能力,勇于面对困难和挑战,有较好的分析问题与解决问题的能力工作认真负责,积极上进,能够吃苦耐劳,有良好的职业素质;掌握C#、NET、asp.net、 ajax、 xml 、javascript、html、css 、div+css等技术能够熟练使用sql、 mysql oracle数据库有、 winform相关项目开发经验!了解AVA语言能够使用JSP开发各种项目了解SSH框架!毕业后曾在x公司任程序员,通过一年的工作和学习,使我对当前主流的三层、MVC架构,asp.net有了更深的认识,能够熟练地开发相关项目。同时培养了我的团队合作精神和沟通能力,可以让我更快的融入新的工作团队,更好的为公司做出自己的贡献,实现自己的价值。本人致力与追求更好的软件技术,能够在这个行业中取得优秀的成绩,在公司团队中成为中坚的技术人才,为公司创造更多的财富从而让自己成为团队中一个不可或缺的份子

    在自我介绍中要更好的体现出自己的优势,让面试官认可你,能找到你们的共同话题。

    Android学习知识点

    Java基础

    • Java Object类方法

    • HashMap原理,Hash冲突,并发集合,线程安全集合及实现原理

    • HashMap 和 HashTable 区别

    • HashCode 作用,如何重载hashCode方法

    • ArrayList与LinkList区别与联系

    • GC机制

    • Java反射机制,Java代理模式

    • Java泛型

    • Synchronized原理

    • Volatile实现原理

    • 方法锁、对象锁、类锁的意义和区别

    • 线程同步的方法:Synchronized、lock、reentrantLock分析

    • Java锁的种类: 公平锁、乐观锁、互斥锁、分段锁、偏向锁、自旋锁等

    • ThreadLocal的原理和用法

    • ThreadPool的用法和示例

    • wait()和sleep()的区别

    Java高阶

    • Java虚拟机,Java运行,Java GC机制(可达性分析法,引用计数法)

    • Java对象的完整生命周期

    • JVM内存模型

    • 进程间通信,线程间通信

    • JVM类加载机制

    • Java引用类型

    • 设计模式:除常用设计模式之外,特别的,反射机制,代理模式

    • HTTP协议和HTTPS协议

    • Socket协议,Socket实现长连接

    • TCP和UDP协议

    • HTTP协议中GET和POST的具体实现

    • 序列化和反序列化

    • 线程池的实现原理

    • 数据库基础知识:多表查询、索引、数据库事务

    数据结构及算法

    数据结构

    • 栈和队列

    • 数组和链表,自定义一个动态数组

    • Hash表,及Hash冲突的解决

    • 二叉树

    • B+ B-树

    • 基础排序算法:重点 快排、归并排序、堆排序(大根堆、小根堆)

    • 快排的优化

    • 二分查找与变种二分查找

    • 哈夫曼树、红黑树

    • 字符串操作,字符串查找,KMP算法

    • 图的BFS、DFS、prim、Dijkstra算法(高阶技能)

    • 经典问题:海量数据的处理 (10亿个数中找出最大的10000个数 TOP K问题)

    算法

    • 分治算法

    • 动态规划

    • 贪心算法

    • 分支限界法

    Android基础

    • Application生命周期

    • Android Activity生命周期

    • Android Service、IntentService,Service和组件间通信

    • Activity的onNewIntent

    • Fragment的懒加载实现,参数传递与保存

    • ContentProvider实例详解

    • BroadcastReceiver使用总结

    • Android消息机制

    • Binder机制,共享内存实现原理

    • Android 事件分发机制

    • Android 多线程的实现:Thread、HandlerThread、AsyncTask、IntentService、RxJava

    • ActivityThread工作原理

    • 嵌套滑动实现原理

    • RecyclerView与ListView(缓存原理,区别联系,优缺点)

    • View的绘制原理,自定义View,自定义ViewGroup

    • View、SurfaceView 与 TextureView

    • 主线程Looper.loop为什么不会造成死循环

    • ViewPager的缓存实现

    • requestLayout,invalidate,postInvalidate区别与联系

    • AndroidP新特性

    • Android两种虚拟机

    • ADB常用命令

    • Asset目录与res目录的区别

    • Android SQLite的使用入门

    这份笔记是我把所有Android学习所需要的知识点按照分类系统的做了一个汇总,详细可以查看目录表:

    Android高级工程师学习核心笔记

    *

    Android大厂面试题目

    拼多多

    一面

    1. 自我介绍

    2. 静态变量和实例变量的区别

    3. 重写equals()方法的注意事项;两个list是怎么判断是否相等的?

    4. HashTable和HashMap的区别;是否允许键为null

    5. 数据同步的方法;synchronized可以在对象上加锁吗?在方法上加锁是加在哪个对象上?

    6. 进程间读写文件的同步方式

    7. 了解哪些加密算法;AES和RSA的区别

    8. HTTP响应码

    9. 进程优先级;Android进程优先级

    10. 如何使一个Service处于另一个进程中;进程的服务保活

    11. Touch事件分发机制

    12. 如何实现客户端长连接的?重试策略是怎样的?如何监控HTTP请求的?

    13. 提问问题

    二面

    1. 三道题选两道

    2. 大顶堆和栈的概念

    3. 最短路径算法概念

    4. 如何缓存HTTP

    HR面

    也不能算是HR面吧,简单聊了聊。

    1. 项目介绍;担任的角色

    2. 家庭情况;期望薪资

    3. 在哪里实习?实习的时候拿到过哪些offer

    4. 介绍了拼多多的待遇以及工作制度

    三面

    1. 自我介绍;项目问了些

    2. 如果安卓是单线程的,那么如何处理界面刷新和网络操作两个模块

    3. 算法题。

    网易

    一面

    1. 自我介绍;除了Android还做了其他的哪些项目;

    2. Activity的lauchMode;用过哪些;说了一个他们遇到的问题,让帮分析分析

    3. 知道的网络库有哪些;Volley和OkHttp分别适合用在什么场景下

    4. ImageLoader的三级缓存是怎么实现的;磁盘缓存是怎么实现的;知道哪些图片加载框架

    5. 内存泄漏如何检测;LeakCanary的原理;Handler是如何造成内存泄漏的;内部类都会造成内存泄漏吗?

    6. 参加的阿里中间件比赛是怎样的;简单实现一个生产者-消费者

    7. Java的线程池有哪几种;需要定时任务使用哪种;CachedThreadPoolExecutor是怎样的

    8. 应用通信是如何确保安全的;Https是怎样的;Android如果采用Https通信的话,客户端这边需要有什么

    9. 提问问题

    二面

    1. TCP的连接为什么是三次握手,不是两次也不是四次

    2. 对Android框架层了解吗?AMS和WMS了解吗? (说了了解AMS,噩梦由此开始)

    3. Fragment用过吗?Activity如何传参给Fragment?为什么用setArgument传参,而不是使用带有参数的构造器?

    4. 知道系统杀进程吗?如果栈中从底到顶现在是A,B,C,然后系统把应用杀了,重新点击,显示的是哪个Activity?这时如果C里面有Fragment是怎样恢复的?(中途解释了为什么要用setArgument传参,说在走Activity的生命周期之前会先有一个恢复过程,反正听的云里雾里)栈下面的A,B存不存在

    5. Binder机制;为什么Binder是一次拷贝

    新美大

    一面

    1. 自我介绍

    2. 为什么选用OkHttp?为什么用MVP模式?

    3. ImageLoader的三级缓存怎么做的;OkHttp的磁盘缓存怎么做的?

    4. 如何删除文章的广告之类的?有遇到不符合的情况吗?

    5. HashMap是线程安全的吗?HashMap线程不安全会造成什么现象?如何使HashMap变为线程安全的?

    6. Java的内存模型;GC;遇到过OOM情况吗?有什么可以检测内存泄露的工具

    7. 文章列表用的什么什么控件?ListView如何优化?RecyclerView用过吗?和ListView的区别

    8. 应用中有几个Activity;ViewPager嵌套Fragment怎么用,遇到过什么坑没?

    9. 自定义View时自定义属性该怎么做?

    10. 印象最深刻的项目,或难点

    二面

    1. 自我介绍

    2. 界面展示用的ListView还是RecyclerView?如何做文章的过滤的?如果改成别的网站需要怎么做?

    3. ImageLoader怎么实现的?内存缓存使用的是什么策略?

    4. 项目中TCP+HTTP+JSON是怎么回事?

    5. android ui自动化测试

    6. 实习的项目

    7. 对Kotlin的了解;准备让用Kotlin写一个界面的

    8. 给了一个布局,让说说看怎么编写

    9. 了解啥新技术

    10. 问问题

    三面

    1. 自我介绍

    2. 为什么选用AES加密?

    3. 全程没聊技术,介绍他所在部门做的事情,问我感不感兴趣,我也提问了一些问题,聊得比较投机

    4. 手上的offer

    HR面

    问了一些基本信息,手上offer情况,对薪资的要求。

    贝贝网

    一面

    1. 自我介绍

    2. 三级缓存怎么做的;内存缓存的大小怎么定的;

    3. 实习为什么选择**公司;实习项目是怎么做的

    4. 阿里中间件比赛是怎样的

    5. 问问题

    一面比较轻松,二面比较深,毕竟技术合伙人面试的,感觉不太好

    二面

    1. 自我介绍

    2. 用了哪些开源库;对Android哪些热点技术研究了;热修复的原理是什么,看过源码吗

    3. 模块化了解吗?如果自己实现怎么实现

    4. 图片三级缓存怎么做的;如何避免OOM;

    5. 有没有对性能优化进行过研究;overdraw如何解决

    HR面

    1. 家在哪里;对贝贝的了解;手上的offer;七天出消息

    2. 兴趣爱好

    面试题,网上一大把又多又杂。根本不能很好的做一个系统查漏补缺。就算刷完也面上就忘记了。我不知道大家是不是这样的,我经历过所以我明白这些痛苦,一到面试忘光。所有我和朋友在这几年里整理了一份2246页PDF的Android高级架构师面试题合集。现在在这里分享出来,希望对之后大家之后秋招有帮助!

    点击领取【Android高级架构师秋招大厂高频面试题目合集】

    结尾

    最后的几句话吧

    我的秋招结束了,这就是我的总结和感慨。

    PS:一定要觉得自己的努力是有价值的

    PPS:觉得要放弃的时候想想自己原来的努力

    PPPS:努力不一定成功,不努力注定失败

    PPPPS:不是幸运不光顾你,而是他买了更好的东西在前面那个路口等你

    PPPPPS:要看别人现在有多荣耀,你现在羡慕是没有看到过别人荣耀下的努力

    最后一句,这是我对自己一直的暗示(虽然有点不好听,但是是我的真实感觉):不要觉得自己多厉害,你在一些人眼里就是垃圾;不要觉得自己多垃圾,你在一些人眼里就是成功的。

    End (人生没有完结)

    相关文章

      网友评论

        本文标题:2020秋招知识点查漏补缺(预热期),大量高频大厂面试题集合(有

        本文链接:https://www.haomeiwen.com/subject/tlpmcktx.html