首页 > 36天16场面试,二本菜鸡大厂实习之路
头像
想要一个offer就好
编辑于 2021-05-14 10:20
+ 关注

36天16场面试,二本菜鸡大厂实习之路

首先自我介绍:广东某带学院结尾二本。Android开发实习岗位,没啥项目,没有任何奖项,算法极差,基础不好。

在牛客网上见到的大厂招聘内推贴全部都投递过,已经忘记投递了多少个公司。

从3月22号经历第一场面试,4月27号晚收到人生第一个offer,其中36天时间里经历16场面试,主要有:

腾讯7,字节2面,美团1面,京东3面(offer),阿里2面,cvte1面。

5.14更新:
最后offer收获情况:京东、网易互娱、cvte、腾讯offer。 最后选择去了腾讯。

关于京东的面经可以看看我的主页。

在这面试期间,几乎每一场都会发现自己的不足之处,然后开始查漏补缺,补全知识,提升自己。

面试经历由于太多,不过多赘述,以腾讯的面试经历来作为自己的整体总结:

腾讯:

安卓不知道哪个部门一面,与二面(3.22,3.24):

这两面是人生第一面,第一面当中由于自己运气好,刚刚学过GC,面试官问了之后侃侃而谈,侥幸通过,在二面中,手撕代码部分暴露了自己算法能力极差的缺点
,遂凉凉。

微信安卓一面(3.29):

这一面当时由于太过挫败,没有做面经。在手撕代码部分反转链表写半天写不出来(这也能暴露我前期代码能力到底有多差),遂挂。

这一面是我算法的转折点,开始有的放矢,严抓自己的算法。

不知名安卓部门一面(4.6):

这一面是最累的一面,一路深扒基础,数据结构从树一路递进到B树,算法冒泡排序一路到快排,最后算法题也做出来了,总耗时80分钟,最后6天后横向对比不过别人,流程变灰。


在这一面之后开始明白自己知识不成体系的缺点,开始做知识的思维导图,整理自己零碎的知识点,这一点十分重要!

这一面之后将自己的知识点开始串联成体系,之后就几乎没有在基础知识上栽过跟头。

不知名安卓部门一面与二面(4.24,4.26):

这一面反映了我上一面之后做的思维导图给我带来的收获,很多知识点问到都是一套组合拳打的面试官找不着北,算法题手撕快排也顺利手撕出来,遂通过。

二面的时候可能是自己确认参加后,要去京东hr面,打电话改了面试时间,导致面试官不开心。面试官全程敷衍,开局两道算法题之后就不怎么理我,最后也是随便问了几个问题就溜之大吉,面试结束后瞬间流程结束。

心里想着安心去我东哥做朋友算了,结果结束后不到7个小时又被捞起.....

腾讯视频一面(4.28):

这一面当中问我的知识点全部对答如流,两道算法题,一道合并有序数组,一道反转链表秒杀。

最后问面试官怎么样,表示已经满足他对一个实习生的要求,遂通过。

4.30约了二面,被面试官鸽了,估计是忘记要刷我KPI了,于是改期到5.7,到时候再更新情况。

总体上腾讯的面试时间线很好的展示了自己一个进步的过程,从啥都不会,算法垃圾的一批,每一轮面试结束后总结反思,查漏补缺,于是到最近的面试,面试官表示没啥好问的了,满足一个实习生的要求

这个过程需要每一次面试都认真对待,反思总结。就像打怪升级,不断提升自己。

自己知识点的一个大的突破是开始做思维导图,在做思维导图的过程中能够很好的发现自己有什么地方有欠缺,很好的看见自己的知识体系中有什么部分是比较薄弱的,继续查漏补缺。

分享一下自己做的思维导图:




思维导图对自己的帮助真的巨大,在觉得自己的知识十分散乱的时候,真的应该去做一下思维导图,满满的收获!

整体上来说自己一直是螺旋式提升,每次面试都当成一次打怪升级的过程面试完后的总结与反思必不可少,面试后进行查漏补缺,在查漏补缺的时候要有深究的热心,才能更好的提升自己。

有跟我一样带学院二本甚至三本出身的同志们不要害怕,多投多面多总结,终总会达成自己的目标,收获到属于自己的offer!


其实面试多了一些发现,八股文的题问来问去也就那一些,下面总结一下遇到的经典面试题

Android:
Android常问的知识点都在这张图里了,有兴趣的看看就好了,还有一些备注xmind转成图片后看不见,有兴趣的可以私聊我发给你



计算机网络:

TCP部分:
TCP与UDP差别
基于TCP与UDP实现的协议
TCP三次握手全过程
两次握手行不行
TCP四次挥手全过程
time_wait状态是第几次挥手之后
time_wait持续多久?为什么?
TCP拥塞控制全过程

HTTP部分:
HTTP报文结构
HTTP返回状态码(一些重点的301,302,304,404等要熟悉)
HTTP的常用8种方法
HTTP缓存相关
GET和POST区别(这个我遇到了五六次)
HTTP1.0缺点
HTTP1.1跟HTTP1.0
HTTP2.0跟HTTP1.1
HTTP2.0的局限点
HTTP与HTTPS
HTTS链接建立过程
对称加密与非对称加密
常见的对称加密算法与非对称加密算法
cookie和session的作用和区别

计网OSI七层模型与五层模型。

基本上计网问来问去就这些。

操作系统:
基本知识:
内核态与用户态
为什么要有内核态
为什么内核态切换效率低
大端与小端
堆和栈

进程线程:
进程线程区别
进程主要有什么数据
线程有什么数据
有了进程为什么要有线程
线程过多会怎么样
线程与进程的生命周期
进程调度算法
进程间通信的方式
线程间通信的方式
孤儿进程与僵尸进程

内存管理:
分段式管理
内存分配算法
分页式管理
分段式管理
段页式管理
虚拟内存
页面调度算法
抖动现象

死锁:
死锁的必要条件
死锁的产生原因
死锁的处理方法

Java:

基础知识:
面对对象面向过程
对多态与封装的理解
final关键字的作用(这个几乎问了我10次)
static关键字的作用
String、StringBuffer、StringBuilder区别
String、StringBuffer、StringBuilder三者效率对比
自动装箱与拆箱
Object有什么方法(记住常用的七八个就好了)
notify跟notifyAll区别         (腾讯问过一次)
抽象类与接口区别(常问)
反射机制                (这个也经常问)
深浅拷贝区别        (字节、腾讯都问过)

集合:
讲一下List、Set、Map三个的特点
LinkedList和ArrayList的底层实现
ArrayList底层使用了什么数组
LinkedListHashSet和TreeSet有序性区别
HashMap底层数据结构(经典八股文,一定要熟悉)
其他解决Hash冲突的方法(开放地址、再哈希等)
为什么HashMap改用尾插法(防止多线程导致链表成环)
头插法有什么优点
HashMap扩容机制
HashMap是先插入还是先扩容
为什么扩容因子设置0.75
为什么每次成二倍扩容
HashTable扩容机制(初始为11,每次扩容2N + 1)
Hashtable扩容的数组长度为什么时旧数组长度乘以2加1(保证奇数,减少哈希冲突,但是效率低)
TreeMap的底层数据结构
LinkedListHashMap的底层数据结构
ConcurrentHashMap的底层数据结构
ConcurrentHashMap在元素插入时要用几次哈希,为什么?
Segment的初始大小
ConcurrentHashMap的put操作全过程(分JDK1.7与1.8回答)
ConcurrentHashMap的get操作
ConcurrentHashMap的size操作

并发:
volatile关键字作用(不可原子性、可见性、防止指令重排)
volatile关键字在双重锁实现单例作用(防止指令重排导致多线程并发获取问题)
volatile可见性如何实现(直接刷新缓存,使其他缓存失效)
synchronize关键字实现(静态方法flag上设置ACC_synchronized,同步代码块使用monitorenter和monitorenter
synchronize的优化有什么(自旋锁、锁清除、锁碰撞、锁升级)
锁升级全过程(无锁、偏向锁、轻量级锁、重量级锁)
讲一讲对象头(主要的数据:HashCode、GC代、锁标志位等)
重量级锁锁标志位是什么(10,网易问过一次)
为什么线程切换效率低(需要内核态用户态切换,进行上下文交换)
如何减少上下文切换(无锁编程、使用最少线程、协程、CAS操作)
讲一讲ReentrantLock(等待可中断、公平策略、可重入、可选择Condition)
讲一讲CAS操作
有什么基于CAS操作实现的类(Atomic下的原子类)
讲一讲AQS
有什么基于AQS实现的类(ReentrantLock、Semaphore、ReentrantReadWriteLock、CountDownLatch等)
讲一讲乐观锁与悲观锁以及具体例子
讲一下线程池的主要参数(7个参数)
线程池一个任务进入的全过程
有什么类型的线程池(newCachedThreadPool(任务进入无空闲线程开新)、FixedThreadPool(固定核心数)、SingleThreadExecutor(单线程))
线程过多会怎么样
线程过过少会怎么样


JVM:


最常遇到的几个问题是:

讲一讲GC机制(这个问题至少16次面试遇到10次)
这里建议从三个问题去讲:

什么对象需要回收?(引用计数法、GCroot)
什么时候回收?(安全点与安全区域)
如何回收?(回收算法与垃圾回收器)

讲一讲类加载机制:
加载:三个要点,把文件转为二进制流形式,把静态数据结构转为运行时数据结构,生成class文件
验证:验证文件是否会损害虚拟机
准备:静态变量初始化
解析:符号引用转直接引用
初始化:开始初始化

new一个对象要经过哪几步:
1、堆中创建对象
2、初始化值
3、赋予引用

讲一讲JVM内存区域:
执行引擎、本地方法库接口、本地方法库、运行时区域

讲一讲运行时区域:
线程私有:程序计数器,虚拟机栈,本地方法栈(要很熟悉)
线程共有:堆、方法区

了解元数据区嘛?
元数据区会溢出嘛?溢出报什么错误?

讲一讲双亲委派机制(老八股文了,不会的多看看)
如何打破双亲委派机制(复写类加载器的loadClass和findClass)
打破双亲委派机制的例子?

问题主要出自以下知识点,以下知识点掌握就OK了。



限于自己水平不足,以上可能有很多错误,请各位指正。

以上,结束,愿各位早日拿到满意的offer。

更多模拟面试

全部评论

(45) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

热门推荐