撕代码:
一个二维平面上有 n 个气球,都是标准椭圆(也就是说可以通过两个坐标确定一个椭圆的位置及大小),椭圆的外切矩形与坐标轴平行,椭圆的分布是随机的,但是不存在两个椭圆交叉的情况(不存在外切矩形相交),问最少需要多少条平行于 y 轴的线,能够穿过所有的气球?
找出两个单向链表中的公共部分。
平时怎么学习的?
平时有看什么书?(我说最近有看 《Android进阶解密》)
这本书的章节是怎么安排的?它有什么特点?
如果要你写每一章的 topic 你会怎么写?
提问环节:
应届生进入公司能接触到哪些业务?
如何看待“程序员是吃年轻饭的”这一观点?
网易四面(总监面 25 min) 自我介绍
大学学过哪些课程?然后问了某些课程的分数
一个无序数组建堆的时间复杂度是多少?
死锁是什么?如何产生的(产生死锁的条件)?
TCP 中的滑动窗口
看过《算法导论》这本书嘛?
职业规划
为什么选择杭州而不是北京
为什么不读研?
印象最深的项目
最后依然是提问环节
面试总结:
我的秋招应该也就到这儿了,说实话,我不想再折腾了,因为经过这么多笔试、面试,发现自己的技术真的还很差,基础不牢固,知识点掌握的不够深入,我习惯性在面试结束后让面试官点评一下自己的表现,听到最多的大概就是“对某某知识点理解的不够深入”“加强基础”。
如果最终没能保研,我将全身心投入,准备明年的春招,据说到时候压力更大、更难,能怎么办呢?加油吧!!!
面试基础很重要!
一般包括Android基础、Java基础、Android常用的开源框架、设计模式和网络基础等等。下面我来列举一下常见的考察点:
Java相关 Java基础
HashMap1.7和1.8的实现原理
final关键字,为什么匿名内部类使用局部引用要用final
Java多线程
线程池的使用和原理
锁机制:synchronized、Lock
volatile关键字
ThreadLocal原理
JVM
Java内存结构
Java垃圾回收机制
Java类加载过程
Android相关 Android基础
Handler通信机制
跨进程通信方式
Activity启动模式
内存优化、布局优化
View的绘制流程
Android事件分发机制
动画的分类及其原理
MVC、MVP和MVVM模式
SparseArray原理
Android开源框架
Android网络库:Volley、OkHttp和Retrofit的使用、原理和对比
Android图片库:Glide和Picasso的使用、原理和对比
EventBus的使用和原理
RxJava的使用和原理
Router的使用和原理
网络基础 HTTP相关:包括HTTP2.0、HTTPS等
TCP相关:三次握手、四次挥手等
设计模式 单例模式
代理模式:静态代理和动态代理
观察者模式
这些基础知识一方面大家可以直接阅读源码,一方面可以去网上搜索相关文章去学习。
技术外这些准备要做好 首先是准备简历:
简历编写需要注意的几点:
1.标题的直接按照姓名-几年工作经验-应聘岗位格式来填写。
例如 小明——四年工作经验——Android开发高级工程师。因为要知道,HR筛选简历是非常快的,你要在第一时间就让他看到他想要看的信息。HR一开始最关心的就是工作年限和岗位,你直接在标题栏用最大的字体写出来会比很多人介绍了半天项目最后写年限要好得多。
2.个人信息写最前面。
个人信息栏其实不用写很多东西,最主要的就是姓名、联系方式、性别、如果学校是名校那么就写上,如果本科学的是计算机专业也可以在这里写上,如果都不是就最好放到最后去写,因为最前面的东西永远是最先看到的内容,也是你最有竞争力和卖弄的资本。
3.有技术博客和github开源项目的一定写在最前面。
这是活生生的例子。我在面试华为的时候面试官就特意去看了我的csdn上的博客。然后说写的还是不错的,给他留下了一个不错的印象,所以这点是绝对的加分项最好就是写在最前面。
分析考点:
技术面是一场技术面试官对候选人的综合评估
先从面试官角度来分析,在面试过程中的对候选人一些考查点吧。知己知彼百战不殆,面试过程中逆向思考一波,有助于我们怎么应对技术面。
候选人人设是否跟简历一致
主要看候选人是否坦诚真实,这个会直接影响能不能通过。候选人上的项目经验和技能点应该尽可能与候选人匹配,比如说,候选人说做了XX项目,但是问起是怎么实现的,却答不上来,或者说熟悉xx技能点,却只会调用常用的api,对其源码细节一点都不熟悉,那多半是不给过的。如果候选人要吹牛B,能拿出能圆上吹牛B的实力,也是可行的。比如说某某模块其实是你同事做的,但是你也完全理解了,可以应答如流,面试官是不会计较的。
技术的扎实程度和项目经验匹配程度
考查包括对技术的理解和解决问题的能力,包含一些细节,运用的场景,实现的原理等等,目的是为了测试候选人技术水平上限。答得越清晰,越深入,对细节掌握越牢靠越好,不一定需要全部答出答完美才能拿到offer,但这些题回答的效果最能影响到offer能谈多少钱。小厂偏重于技能、项目经验匹配度,大厂偏重于基础、原理。小公司,面试官通常希望候选人尽快上手,就希望候选人有类似竞品或者功能开发经验的候选人,所以也可以从这些方面做准备。大公司呢,可能会提出一些场景来考查候选人怎么设计,这就要求候选人功底深厚,逻辑严谨了。上面的题集我没写答案,因为我觉得很多题本就没有标准答案,也没有必要背题的“标准答案”,优秀的回答,应该是形成自己的理解输出的,说的有理有据就行。
候选人亮点、优势
一般是作为候选人的加分项,或者是面试官为了更快的打开话题,了解候选人的优势,并测测候选人的优势到底屌到什么程度。这个问题回答好了,候选人甚至能翻盘。
如何学习Android面试中所需的技术 很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我针对Android程序员,我这边给大家整理了一套学习宝典!
为了更好更快地学习Android面试中所需的技术,大家可以了解一下我的Android进阶学习路线:(附面试题与学习资料)
Android学习路线图 首先,对于没有学习方向,知识不体系的人,我把我工作几年整理的学习路线分享给大家,做一个借鉴作用,还不知道怎么学习的人可以直接照着我这个学习路线一个个的去学习,知识不体系的人可以参考下我整理路线的方式,总之希望能够帮到你们!
模块化学习资源 接下来是每个模块我整理出来的文档学习资料,帮助大家更细致化的学习。
《Android汇总复习资料—Java》
《Android汇总复习资料—Android》
《Android汇总复习资料—Android扩展》
《Android汇总复习资料—Kotlin》
《Android汇总复习资料—Flutter》
《Android汇总复习资料—算法》
除了上面的学习路线,还可以额外的配合以下方式学习,效果翻倍~
Android进阶学习 ①看视频进行系统学习
前几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。
另外,我自己也珍藏了好几套视频,有需要的我也可以分享给你。
②读源码,看实战笔记,学习大神思路
“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。
主要内含微信 MMKV 源码、AsyncTask 源码、Volley 源码、Retrofit源码、OkHttp 源码等等。
③面试前夕,刷题冲刺
面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。
作者2013年从java开发,转做Android开发,在小厂待过,也去过华为,OPPO等大厂待过,18年四月份进了阿里一直到现在。
参与过不少面试,也当面试官 面试过很多人。深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长,而且极易碰到天花板技术停滞不前!
我整理了一份阿里P7级别的最系统的Android开发主流技术,特别适合有3-5年以上经验的小伙伴深入学习提升。
主要包括阿里,以及字节跳动,腾讯,华为,小米,等一线互联网公司主流架构技术。如果你想深入系统学习Android开发,成为一名合格的高级工程师,可以收藏一下这些Android进阶技术选型
我搜集整理过这几年阿里,以及腾讯,字节跳动,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。
Java语言与原理; 大厂,小厂。Android面试先看你熟不熟悉Java语言
高级UI与自定义view; 自定义view,Android开发的基本功。
性能调优; 数据结构算法,设计模式。都是这里面的关键基础和重点需要熟练的。
NDK开发; 未来的方向,高薪必会。
前沿技术; 组件化,热升级,热修复,框架设计
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
我在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多,CodeChina上可见;
CodeChina开源项目地址:codechina.csdn.net/Code1994/an… 当然,想要深入学习并掌握这些能力,并不简单。关于如何学习,做程序员这一行什么工作强度大家都懂,但是不管工作多忙,每周也要雷打不动的抽出 2 小时用来学习。
前沿技术; 组件化,热升级,热修复,框架设计
[外链图片转存中…(img-XNcbTxRY-1630294424619)]
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
我在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多,CodeChina上可见;
CodeChina开源项目地址:codechina.csdn.net/Code1994/an…
当然,想要深入学习并掌握这些能力,并不简单。关于如何学习,做程序员这一行什么工作强度大家都懂,但是不管工作多忙,每周也要雷打不动的抽出 2 小时用来学习。
不出半年,你就能看出变化!