马上就又要到金三银四求职的黄金期了,很多资深面试官都说其实他们每天都要面试考核很多应聘者,但是通过的人却寥寥无几。他们有几个面试观点可能比较重要,对你的面试和职业规划或许会很有帮助,在这分享给你:
现在的你,到底该不该换工作?
待遇薪资、公司平台、团队氛围、老板实力等等这些因素,综合影响着你的工作和发展,如果没考虑清楚这些就去换工作,你的沉没成本就太大了,每次都重新开始,毫无积累。
应聘是需要准备的。
首先是简历,要用自己的经历去聊,而不是用文字写。并且不要打自己的脸,精通就是精通,熟悉就是熟悉,了解就是了解。还有,面试前要准备哪些技能知识?要不要准备算法题?以及如何表达你做过的项目?这些你都需要好好地准备一下。如果你没有准备的话,那么被pass掉的概率会非常大。
仅仅是做项目变现的公司,该去么?
这样的公司的核心竞争力主要是利用自己的人脉和关系拉项目,“做一票、赚一票”。他们并不创造新事物,只有创造新事物的公司才能称得上是创业工作。如果你想加入创业公司,很多时候靠的是一股子冲劲儿,直接点说就是赌,你想清楚了吗?
很多人没有意识到“慢性死亡”的过程。
你当下可能身处一家不错的公司,薪水也很高,工作也很舒心,好像没必要折腾。但在老板的角度看,这是个简单的性价比问题。时间不断流逝,如果你只是资历更深了,但是能力没有迈上新的台阶,那么相比于一个更加年轻的程序员,哪个性价比更高?答案是显而易见的。
这些问题是不是让你恍然大悟,又心生惶恐。面试不等同于考试,搞定考核范围内的所有内容,考试也就八九不离十了。但面试是人与人的沟通,你也可以看成是一次博弈。面试流程是怎样的?面试官在想什么?更重要的是,面试更应该站在职业规划的层面去看待,去长期规划。
眼看年底到了,肯定很多人都跃跃欲试,准备跳槽到大厂,升职加薪。阿里巴巴、腾讯、字节跳动,这些大厂技术面试官的选人思路是怎样的?废话不多说,先看看这份《大厂面试攻略》大纲吧,可能正是你面试大厂需要的。
阿里巴巴
一面
- 说一下你怎么学习安卓的?
- 项目中遇到哪些问题,如何解决的?
- Android事件分发机制?
- 三级缓存底层实现?
- HashMap底层实现,hashCode如何对应bucket?
- Java的垃圾回收机制,引用计数法两个对象互相引用如何解决?
- 用过的开源框架的源码分析
- Acticity的生命周期,Activity异常退出该如何处理?
- tcp和udp的区别,tcp如何保证可靠的,丢包如何处理?
二面:
- 标号1-n的n个人首尾相接,1到3报数,报到3的退出,求最后一个人的标号
- 给定一个字符串,求第一个不重复的字符 abbcad -> c
美团
一面
- 自我介绍
- 面向对象三大特性
- Java虚拟机,垃圾回收
- GSON
- RxJava+Retrofit
- 图片缓存,三级缓存
- Android启动模式
- 四大组件
- Fragment生命周期,嵌套
- AsyncTask机制
- Handler机制
二面
- 面试官写程序,看错误。
- 面试官写程序让判断GC引用计数法循环引用会发生什么情况
- Android进程间通信,Binder机制
- Handler消息机制,postDelayed会造成线程阻塞吗?对内存有什么影响?
- Debug和Release状态的不同
- 实现stack 的pop和push接口 要求:
1.用基本的数组实现
2.考虑范型
3.考虑下同步问题
4.考虑扩容问题
豌豆荚
豌豆荚一面
- 介绍一下你的项目
- 网络框架的搭建
- 图片加载框架的实现
- 写个图片浏览器,说出你的思路
- 上网站写代码,如下: 有一个容器类 ArrayList,保存整数类型的元素,现在要求编写一个帮助类,类内提供一个帮助函数,帮助函数的功能是删除 容器中<10的元素。
豌豆荚二面
- Activity的启动模式
- 事件分发机制
- 写代码,LeetCode上股票利益最大化问题
- 写代码,剑指offer上第一次只出现一次的字符
豌豆荚三面
- 聊项目,聊大学做过的事
- 写代码,反转字符串
- 写代码,字符串中出现最多的字符。
新浪微博
一面
- 静态内部类、内部类、匿名内部类,为什么内部类会持有外部类的引用?持有的引用是this?还是其它?
静态内部类:使用static修饰的内部类
匿名内部类:使用new生成的内部类
因为内部类的产生依赖于外部类,持有的引用是类名.this。
- ArrayList和Vector的主要区别是什么?
ArrayList在Java1.2引入,用于替换Vector
Vector:
线程同步
当Vector中的元素超过它的初始大小时,Vector会将它的容量翻倍ArrayList:
线程不同步,但性能很好
当ArrayList中的元素超过它的初始大小时,ArrayList只增加50%的大小
-
Java中try catch finally的执行顺序
先执行try中代码发生异常执行catch中代码,最后一定会执行finally中代码
- switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch支持使用byte类型,不支持long类型,String支持在java1.7引入
- Activity和Fragment生命周期有哪些?
Activity——onCreate->onStart->onResume->onPause->onStop->onDestroy
Fragment——onAttach->onCreate->onCreateView->onActivityCreated->onStart->onResume->onPause->onStop->onDestroyView->onDestroy->onDetach
- onInterceptTouchEvent()和onTouchEvent()的区别?
onInterceptTouchEvent()用于拦截触摸事件
onTouchEvent()用于处理触摸事件
- RemoteView在哪些功能中使用
APPwidget和Notification中
- SurfaceView和View的区别是什么?
SurfaceView中采用了双缓存技术,在单独的线程中更新界面
View在UI线程中更新界面
- 讲一下android中进程的优先级?
前台进程
可见进程
服务进程
后台进程
空进程
tips:静态类持有Activity引用会导致内存泄露
二面
- service生命周期,可以执行耗时操作吗?
- JNI开发流程
- Java线程池,线程同步
- 自己设计一个图片加载框架
- 自定义View相关方法
- http ResponseCode
- 插件化,动态加载
- 性能优化,MAT
- AsyncTask原理
- 65k限制
- Serializable和Parcelable
- 文件和数据库哪个效率高
- 断点续传
- WebView和JS
- 所使用的开源框架的实现原理,源码
网易杭研
一面:
- 自我介绍
- Android中ClassLoader和java中有什么关系和区别?
- 熟不熟jvm,说一下Jvm的自动内存管理?
- 语言基础,String类可以被继承吗?为什么?
- Final能修饰什么?(当时我说class、field、method,他说还有吗?然后又叫我不要在意,后来回想起,应该是问到我在参数里面要不要用final,接下来是因为匿名内部类)
- Java中有内存泄露吗?(先说本质,再结合handler+匿名内部类)当时如何分析的?
- 描述下Aidl?觉得aidl有什么缺陷(这里在这个问题上回答有欠缺)
- 评价一下我,如果顺利进网易,需要往技术栈加什么点尽快投入业务?
二面:
- 用过什么开源,举一个例子?(volley)
- Activity生命周期?情景:现在在一张act1点了新的act2,周期如何?
- Act的launchMode,有没有结合项目用过(自己的程序锁和微信的PC端登陆对比,不过我现在又发现,应该大约估计可能是动态加载的一个缺陷,如果有找到相关信息,请务必跟我说。具体问题就是,当在PC端登录时,Android终端的微信会跳出,即使wechat的task不是在fore,当按下确认,返回的是wechat,而不是自己先前的app)
- View的绘制原理,有没有用canvas自己画过ui?
- 以后想做Android什么方向?(中间件+SDK)
- 怎么看待前端和后端?
- 如果学前端会如何学?
- 优缺点?兴趣?
- 想不想来杭州?
- 评价一下我?往技术栈加什么?
三面HR:
- 为什么想来网易?
- 有投其他公司吗?
- 网易最吸引你的是什么?
- 想来杭州吗?
- 评价一下我?
进大厂的诀窍
经过这几年的“摸爬滚打”,我发现进大厂确实有一些诀窍,对于和我一样背景一般的同学,只要你抓住了诀窍,进大厂不是梦。
1)一定要提前准备,至少准备个一个月,网上的面试题多看看,对于那些高频题目,带着理解去学习,实在不能理解的就背下来,大家高考的时候不都是背过来的。
2)大厂通常有很多部门,每个部门的hc数和招人标准都不一样,即便是同个部门,如果hr不同,标准肯定也不一样,重复投简历可以增大我们拿到面试机会的概率。同理,重复面试不同的部门,也可以增大我们进大厂的概率。
3)大厂经常会布局新业务,新业务需要快速启动入场,hc通常会有很多,因此招人的标准会稍微降低,这个时候是个绝佳的机会。我当时进的就是个新的业务部门。
面试系统复习路线
有时候,选择比努力更加重要,机遇比奋斗更加重要。但是,机会只留给有准备的人。我们只有时刻准备着,才能在机会到来的时候,去抓住它。
这里给大家分享一下我的面试复习路线,有需要的朋友可以参考一下:
1、看视频进行系统学习
前几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。
2、进行系统梳理知识,提升储备
客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
系统学习方向:
-
架构师筑基必备技能:深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO
-
Android高级UI与FrameWork源码:高级UI晋升+Framework内核解析+Android组件内核+数据持久化
-
360°全方面性能调优:设计思想与代码质量优化+程序性能优化+开发效率优化
-
解读开源框架设计思想:热修复设计+插件化框架解读+组件化框架设计+图片加载框架+网络访问框架设计+RXJava响应式编程框架设计+IOC架构设计+Android架构组件Jetpack
-
NDK模块开发:NDK基础知识体系+底层图片处理+音视频开发
-
微信小程序:小程序介绍+UI开发+API操作+微信对接
-
Hybrid 开发与Flutter:Html5项目实战+Flutter进阶
知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结。
3、读源码,看实战笔记,学习大神思路
“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。
4、面试前夕,刷题冲刺
面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。
关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三:
以上内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。或者关注主页扫描加 微信 获取。
网友评论