前言
之前因为一直在忙于秋招,也没有进行进一步的学习,一直都在复习已有的知识,寻找自己的不足,所以没有更新过博客,现在拿到了百度,猿辅导以及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大厂面试题目
拼多多
一面
-
自我介绍
-
静态变量和实例变量的区别
-
重写equals()方法的注意事项;两个list是怎么判断是否相等的?
-
HashTable和HashMap的区别;是否允许键为null
-
数据同步的方法;synchronized可以在对象上加锁吗?在方法上加锁是加在哪个对象上?
-
进程间读写文件的同步方式
-
了解哪些加密算法;AES和RSA的区别
-
HTTP响应码
-
进程优先级;Android进程优先级
-
如何使一个Service处于另一个进程中;进程的服务保活
-
Touch事件分发机制
-
如何实现客户端长连接的?重试策略是怎样的?如何监控HTTP请求的?
-
提问问题
二面
-
三道题选两道
-
大顶堆和栈的概念
-
最短路径算法概念
-
如何缓存HTTP
HR面
也不能算是HR面吧,简单聊了聊。
-
项目介绍;担任的角色
-
家庭情况;期望薪资
-
在哪里实习?实习的时候拿到过哪些offer
-
介绍了拼多多的待遇以及工作制度
三面
-
自我介绍;项目问了些
-
如果安卓是单线程的,那么如何处理界面刷新和网络操作两个模块
-
算法题。
网易
一面
-
自我介绍;除了Android还做了其他的哪些项目;
-
Activity的lauchMode;用过哪些;说了一个他们遇到的问题,让帮分析分析
-
知道的网络库有哪些;Volley和OkHttp分别适合用在什么场景下
-
ImageLoader的三级缓存是怎么实现的;磁盘缓存是怎么实现的;知道哪些图片加载框架
-
内存泄漏如何检测;LeakCanary的原理;Handler是如何造成内存泄漏的;内部类都会造成内存泄漏吗?
-
参加的阿里中间件比赛是怎样的;简单实现一个生产者-消费者
-
Java的线程池有哪几种;需要定时任务使用哪种;CachedThreadPoolExecutor是怎样的
-
应用通信是如何确保安全的;Https是怎样的;Android如果采用Https通信的话,客户端这边需要有什么
-
提问问题
二面
-
TCP的连接为什么是三次握手,不是两次也不是四次
-
对Android框架层了解吗?AMS和WMS了解吗? (说了了解AMS,噩梦由此开始)
-
Fragment用过吗?Activity如何传参给Fragment?为什么用setArgument传参,而不是使用带有参数的构造器?
-
知道系统杀进程吗?如果栈中从底到顶现在是A,B,C,然后系统把应用杀了,重新点击,显示的是哪个Activity?这时如果C里面有Fragment是怎样恢复的?(中途解释了为什么要用setArgument传参,说在走Activity的生命周期之前会先有一个恢复过程,反正听的云里雾里)栈下面的A,B存不存在
-
Binder机制;为什么Binder是一次拷贝
新美大
一面
-
自我介绍
-
为什么选用OkHttp?为什么用MVP模式?
-
ImageLoader的三级缓存怎么做的;OkHttp的磁盘缓存怎么做的?
-
如何删除文章的广告之类的?有遇到不符合的情况吗?
-
HashMap是线程安全的吗?HashMap线程不安全会造成什么现象?如何使HashMap变为线程安全的?
-
Java的内存模型;GC;遇到过OOM情况吗?有什么可以检测内存泄露的工具
-
文章列表用的什么什么控件?ListView如何优化?RecyclerView用过吗?和ListView的区别
-
应用中有几个Activity;ViewPager嵌套Fragment怎么用,遇到过什么坑没?
-
自定义View时自定义属性该怎么做?
-
印象最深刻的项目,或难点
二面
-
自我介绍
-
界面展示用的ListView还是RecyclerView?如何做文章的过滤的?如果改成别的网站需要怎么做?
-
ImageLoader怎么实现的?内存缓存使用的是什么策略?
-
项目中TCP+HTTP+JSON是怎么回事?
-
android ui自动化测试
-
实习的项目
-
对Kotlin的了解;准备让用Kotlin写一个界面的
-
给了一个布局,让说说看怎么编写
-
了解啥新技术
-
问问题
三面
-
自我介绍
-
为什么选用AES加密?
-
全程没聊技术,介绍他所在部门做的事情,问我感不感兴趣,我也提问了一些问题,聊得比较投机
-
手上的offer
HR面
问了一些基本信息,手上offer情况,对薪资的要求。
贝贝网
一面
-
自我介绍
-
三级缓存怎么做的;内存缓存的大小怎么定的;
-
实习为什么选择**公司;实习项目是怎么做的
-
阿里中间件比赛是怎样的
-
问问题
一面比较轻松,二面比较深,毕竟技术合伙人面试的,感觉不太好
二面
-
自我介绍
-
用了哪些开源库;对Android哪些热点技术研究了;热修复的原理是什么,看过源码吗
-
模块化了解吗?如果自己实现怎么实现
-
图片三级缓存怎么做的;如何避免OOM;
-
有没有对性能优化进行过研究;overdraw如何解决
HR面
-
家在哪里;对贝贝的了解;手上的offer;七天出消息
-
兴趣爱好
面试题,网上一大把又多又杂。根本不能很好的做一个系统查漏补缺。就算刷完也面上就忘记了。我不知道大家是不是这样的,我经历过所以我明白这些痛苦,一到面试忘光。所有我和朋友在这几年里整理了一份2246页PDF的Android高级架构师面试题合集。现在在这里分享出来,希望对之后大家之后秋招有帮助!
点击领取【Android高级架构师秋招大厂高频面试题目合集】
结尾
最后的几句话吧
我的秋招结束了,这就是我的总结和感慨。
PS:一定要觉得自己的努力是有价值的
PPS:觉得要放弃的时候想想自己原来的努力
PPPS:努力不一定成功,不努力注定失败
PPPPS:不是幸运不光顾你,而是他买了更好的东西在前面那个路口等你
PPPPPS:要看别人现在有多荣耀,你现在羡慕是没有看到过别人荣耀下的努力
最后一句,这是我对自己一直的暗示(虽然有点不好听,但是是我的真实感觉):不要觉得自己多厉害,你在一些人眼里就是垃圾;不要觉得自己多垃圾,你在一些人眼里就是成功的。
End (人生没有完结)
网友评论