前言
自我介绍下,本人就是个屌丝程序猿,大学很普通名字就不说了,软件工程专业。大学毕业后去了一家大公司面试,成功的拿到了Offer。说实话,拿到Offer的那一刻,我的内心是非常开心激动的,入职后也非常顺利,就是因为太顺利,导致我一直很安逸,也对未来没有什么考虑。
后来的后来,由于我一直以来的安逸,自身的技术也一直是那样,公司的发展需要更高技术的人才。很显然,我已经适应不了公司的发展,最终,我被辞退了。
被辞退后,我内心深受打击,对这座城市也心灰意冷。一番思索过后我决定买高铁票回老家。回到老家后,我看着这座熟悉的城市,心情舒缓了许多。在老家待了几天,我觉得不能再这么颓废下去了。但是近年来的安逸工作状态,让我的技术没有一点长进,我自知这个状态下去想要进到互联网头部公司定是不现实的,毕竟学历不能代表全部,技术才是最重要的。我决定重新出发,提升自己的技术。
本人目前已经在腾讯入职了,过程非常艰辛,我深知这来之不易的成功是我一直以来努力付出得到的。
下面是我面试中的一些流程和面试的问题,给小伙伴们一些经验,希望能帮助到你们。
整理了很多大厂面试题,有需要的朋友们,vx扫描二维码领取哦
面试流程
腾讯一面(全程大约1h左右)
- 自我介绍
- RecyclerView和ListView的区别
- TListView 如何缓存的?
- RecyclerView联系人列表如何实现A-Z快速定位
- 广播和EventBus的区别
- 主线程Looper循环为什么没有卡主线程?nativePollOnce
- SharedPreference的线程安全、进程安全,如何跨进程
- Android 中实现多线程: threads, Handler, AsyncTask, IntentService
- Android 中如何实现多进程
- 自定义View的过程:measure,layout,draw
- LayoutInflater#inflate 的 attrachToParent true 是什么意思
- theme 和 style 有什么区别,优先级
- 有哪些进程间通信方式
- View 的渲染过程
- Binder 的原理和优势
- AIDL 中的 oneway 有什么用,方向标签 in、out、inout 是什么意思
- Android 中有哪些动画,都说下
- Serializable 和 Parcelable 的区别
- 知道哪些Layout,ConstraintLayout 的特点是什么
- 手机开发者选项有哪些,不保留活动是什么
(面试官问了很多基础的问题,有些回答的并不是很流利,不知道还有没有希望。)
二面是在星期四的一个下午,距离一面过去大约有一个星期了吧。时间都有那么久了,我以为一面可能凉了,结果就收到了面试的邀约。
腾讯二面(大约45min)
- 说一下你对哪个项目比较熟悉、为什么做这个项目
- 项目采用了什么架构,数据库如何设计的
- 数据库由哪些表,为什么有这些表
- 主要有哪些核心模块,模块之间如何通信的
- 如何保存会话状态,有哪些方式、区别如何
- 分布式session如何管理,你有哪些方案
- 学过数据结构和算法吗(当然),你说说二分搜索的过程
- 说一下快排的过程,写一下伪代码
- 了解哪设计模式,举例说说在jdk源码哪些用到了你说的设计模式
(二面大部分问的都是项目技术上的。感觉我回答的并不是特别好,所以感觉没什么希望了。)
就在我准备重新投简历的时候,他们给我打电话了,让我约个时间视频面试,然后就开始了第三轮面试。
腾讯三面(视频面,全程大概1h左右)
- 说下你平时看的一些技术博客,书籍
- linux 下的一些指令
- 工作中你觉得最不爽的事情是什么
- 说下你的优缺点
- 有没有想过去创业公司
- 写个 strcpy 函数
- 说说你自己的性格
- 给你一个系统,后台的逻辑已经实现了,但是前端加载很慢,怎么检测
- 以后可能要学习很多新技术,你怎么看
- 项目中遇到的困难(提前想好,并且把实现或者优化方法说清楚)
- 系统的量级、pv、uv 等
- 应对高并发的解决办法(分布式)
- 在项目中主要负责了哪些工作
- nginx 的负载均衡
- 分布式缓存的一致性,服务器如何扩容(哈希环)
(第三轮面试整体感觉还行,没有什么特别大的压力)
HR面(大约30min)
- 平常怎么学习的
- 兴趣爱好
- 觉得自己前面几轮面试怎么样
- 除了Java还研究过其它什么技术(我说AI,区块链)
- 跟我介绍一下区块链~
- 怎么看待国内区块链的发展
- 跟我说一下你认为最具有挑战性的项目
我做了哪些?最终顺利拿到offer的?
1.跟着视频学,重新开始
2.巩固知识,加强自己的专业技能
3.刷面试题,熟悉面试流程
面试建议
1.有耐心且主动
面试不要着急着去问结果,一般在hr面的时候,她的态度多少能够猜个七七八八的,如果等上一周还没有通知,那就可以主动去问了。
2.刷题是为了提升自己的运气
运气在面试过程中是非常重要的,刷题的目的很简单,除了巩固我们所掌握的,另一个就是为了能提高在面试中我们的运气,如果能够问到一样的题是再好不过了,当然这个办法是适用于职级中低岗位。
3.掌握基础,注意深度
腾讯面试最喜欢问两类问题,一类是基础,另一类就是深度。基础部分,无非就是我们所掌握的技术基础内容,基本上只要是有准备的都没有太大的问题。另一部分就是深度问题,大多涉及到自己之前的工作、项目,面试官所问的问题不仅仅是停留在表面那么简单,背后的原理是什么才是面试官想要问的。
需要面试题或者学习资料的朋友们,vx扫描二维码领取哦
最后
其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!
认真复习,认真对待面试,准备充分,不断总结。实在不会你就背,虽说有些特别基础的知识点在实际开发中用不到,但面试就是面试,面试就是问这些,连基础的问题都回答不好,实在很难让你通过。
|