双非本科毕业一年的Android开发渣渣斩获腾讯系公司offer,一年经验都考察什么?

2021-03-04 09:47:04 浏览数 (1)

面试旺季来即,分享面经 毕业1年的我是怎么斩获腾讯系公司的offer?来看看我的面试是怎样的。

这里是双非本科毕业一年的Android开发渣渣,坐标深圳。在毕业和准备面试的时候看了牛客上的许多面经,因此现在准备回馈分享一波我的面试经历。

我社招的状态是在职精投,除了富途,还投了腾讯和字节。其中腾讯音乐的QQ音乐部门捞了我,但是很可惜,倒在了二面,QQ音乐的面经后面整理了再发吧。

感觉一年经验的社招和校招差不多,四轮都是视频面试,面试官都很准时,而且人都很好,在回答卡住的时候会给与提示,在反问环节我也看出了面试官的思路是非常清晰的,总的来说整个面试过程非常nice。

5.28投简历,5.29晚约视频面试。

一面 1h15min
  • 为什么想换公司
  • 在开发中遇到的最大的困难?怎么解决的
  • 接口和抽象类的区别,一个类的能不能多继承,能不能实现多个接口
  • 接口类的非方法能不能被修改?不能,接口类里非方法的类型都是final修饰,所以必须初始化并且不能被修改
  • 抽象类的变量可以被继承和修改么?可以final关键字
  • GC如何标记要回收的内存?GC Roots有哪些
  • 线程安全问题,sychronized、lock/unlock的区别使用,公平锁和非公平锁的概念
  • sychronized是如何体现公平锁和非公平锁的(CAS、锁自旋)
  • HashMap原理,在什么时候扩容(当加入的元素大于阈值threshold后)。以及线程安全的HashTableConcurrentHashMap的原理
  • View的事件分发
  • 布局优化怎么做的?LinearLayout和RelativeLayout在性能上的区别
  • WebView的优化,如果出现了数据的交互该怎么做?(AIDL),Binder怎么实现进程间通信的?mmap的模型
  • 内存优化?RecyclerView的缓存机制,如何优化
  • 项目中的联网模块怎么实现的?UDP和TCP的区别
  • TCP会检查包的顺序么,Tcp怎么控制包的发送(滑动窗口)
  • 看到项目中使用了WebSocket,讲下它和Http的区别
  • RxJava的操作符?项目中是如何使用RxJava的
  • 快速排序和冒泡排序的稳定性问题

编程题:将一个分数转化成小数形式输出,因为分数只可能是有限小数或无限循环小数。如果小数是无限循环小数,则使用小括号括起。

这题思路是做while轮除。我界定是否产生了无限循环小数是使用的HashTable。

对我们公司了解多少?有什么想问的?

二面 45min
  • 为什么想要离开当前的公司
  • "abcde"字符串在内存中占多大,这些字节在JVM的编码格式
  • JVM堆和栈的作用,进程和线程的作用,堆栈和线程进程的对应关系
  • 死锁怎么产生?如何去解决死锁,多个方案
  • 线程同步问题,自增是原子操作吗?如果要做到线程安全的自增要做怎么做
  • 快排的过程,时间复杂度,n*lgn是如何得来的
  • Http是在哪一层,Https使用了非对称加密还是对称加密?
  • TCP和UDP的区别?为什么UDP不可靠还要使用UDP
  • 拥塞控制和流量控制的区别

智力题:给一篮子鸡蛋,如何用最少的比对次数找到最大的和最小的鸡蛋,。

我的回答是 一开始,随便拿出两个鸡蛋,然后接下来剩下的鸡蛋每拿出一个,就和这两个进行比较,如果比两个中小的鸡蛋小就替换小的那个,如果比大的鸡蛋大就替换掉大的那个,这样比较次数就是 (n-2)2 ,因为有些鸡蛋只用比一次就行了(因为是最小的就不用往大的比了),所以结果是小于 (n-2)2的,但我觉得应该还可以更加快....

编程题,排序二叉树的插入,如果插入相同的数,需要做什么保证树可以还原(即不允许丢弃到相同的数)?

  • 有什么要问的?
三面 1h20min

两桶油漆,A桶全是红色油漆,B桶全是蓝色油漆,将A桶中取一勺倒入B中,再从B桶中取一勺倒入A中,求A桶的蓝红比例和B桶的红蓝比例,是大于、小于还是等于?

  • 用一个数组实现一个循环队列
  • 给定一个只有“R”“G”“B”三个字母的字符串,用一次遍历基于原字符串将他们以“RGB”的顺序排序好(LeetCode原题)
  • 52张扑克牌,取一张不放回,再取一张, 两张为相同颜色的概率是多少?
hr面 45min
  • 自我介绍
  • 为什么选择计算机这个专业
  • 为什么要离开当前的公司
  • 你是深圳的,为什么会选择在东莞工作
  • 在上一个公司学到了什么
  • 选择公司因素,按优先级排个序
  • 用三个关键词描述自己
  • 代入用户思维和不代入用户思维做产品有什么区别
  • 家庭情况,有没有女朋友
  • 你觉得一个好胜心过强的人会有什么样的问题
  • 你会想在团队里面承担一个什么样的角色
  • 平时的爱好是什么
  • 有没有给自己制定一些计划?对自己的要求有多高
  • 学习的渠道、方式,有GitHub吗?看什么样的书
  • 学习是基于公司项目学习,还是个人兴趣学习
  • 预计到岗时间,期望薪资
  • 反问环节

总结一下,技术面环节主要考项目和Java基础、编程题要注意规范和思路是否最优。

和HR小哥哥聊得很开心,他说下周会给offer call,我就乖乖的等着。

关于面试复习路线

多余的话就不讲了,接下来将分享面试的一个复习路线,如果你也在准备面试但是不知道怎么高效复习,可以参考一下我的复习路线,有任何问题也欢迎一起互相交流,加油吧!

这里给大家提供一个方向,进行体系化的学习:

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、读源码,看实战笔记,学习大神思路

“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。

主要内含微信 MMKV 源码、AsyncTask 源码、Volley 源码、Retrofit源码、OkHttp 源码等等。

4、面试前夕,刷题冲刺

面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。

关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三。

这些内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容

0 人点赞