2020年非科班Android秋招面试求职经历(已拿字节offe
看了很多前辈分享的面经,最近一个月都忙着找工作,终于尘埃落定,这里也分享下我的4家面试经验,希望可以帮助到大家!
美团一面
1. 自我介绍
2. TCP和UDP有哪些区别
3. TCP三次握手四次挥手,为什么挥手时要确认两次?
4. 线程和进程有哪些区别
5. 线程间通信方式(卡住。。)
6. 对synchronized怎么理解的
7. 死锁是怎么产生的(慌。。)
8. 谈谈对static的理解
9. JAVA访问修饰符有哪些区别
10. 静态内部类能访问非静态方法吗,为什么?
11. Object有哪些方法?
12. 重写equals()需要重写hashcode()吗,为什么?(。。)
13. 了解JVM的分区吗?(不了解。。)
14. 了解Java的各种框架吗(还是不了解。。)
15. 数据库了解吗,说说四大原则(ACID)
16. 算法题(数组的全排列)
西瓜视频客户端实习 一面
- 自我介绍
- HTTP,TCP,为啥挥手比握手多一次
- 进程与线程的区别,进程间通信
- Activity的生命周期(有点迷,onStart之后Activity可见但不可交互,面试官觉得这句话有问题,可能是我理解错了???)
- HashMap底层
- 快速排序,堆排序,堆
- 算法题:两个单链表的第一个相交节点(表达能力出错了,没有讲清楚,最后就干脆让我直接写代码了,幸好代码没出问题)
我是真没想到这题我会讲不清楚,心凉.jpg
西瓜视频客户端实习 二面
面试官水平很高,人也超级nice,我答不出来的时候会给很多提示,虽然有些我问题还是没答上。。。
- 学过java吗?学过安卓吗?操作系统,数据库什么的学过吧?
- 写个单例吧(速成的设计模式,出了问题没改出来)
- 了解过线程池吗?为什么要用线程池?(速成的,底层不太懂,追问底层就没答出来)
- Android四大组件?Activity启动模式?SingleTop模式下,如果启动一个和栈顶相同的Activity,这个Activity会收到什么回调?
- 写Android或java的时候遇到过OOM吗?
- 死锁的形成?怎么避免死锁?
- 有写过自定义View么?
- 算法题:二叉树中序遍历,要求非递归(整一个stack然后模拟就完事了)
- 有什么问题要问吗(问了评价,面试官觉得我学过一个学期的java和android,写单例的时候不应该出这么多错误,不应该不会改。内心OS:?????我为什么要问这个问题?)
hr打电话告知昨天面试凉了,但是抖音客户端捞了一手,约了30号面试。
抖音客户端提前批 一面
- 自我介绍
- 问了项目(其实就是个大作业,有点紧张,很多东西没记起来)
- Service,Service的两种启动方式
- Activity生命周期,点了home键之后再返回app,Activity的生命周期变化
- BrocastReceiver,BrocastReveiver两种注册方式,ContentProvider
- HTTP,请求头,请求方法的区别
- 浏览器输入url之后按回车之后的过程,过程中用了什么协议,域名解析具体过程
- finalize,在什么时候使用
- 类加载过程
- 算法题:给一个单词列表,起始单词和目标单词,从起始单词开始,每次只能修改1个字符,并且修改后的单词也要在单词列表里,问从起始单词到目标单词的最短转移过程。(把图论模型建出来,然后手写了个堆优化的dijkstra+记录路径,挺久没写这个了,手有点生,幸好没出问题)
- 反问环节
抖音客户端提前批 二面
- 自我介绍
- 问了项目
- 如何启动一个Activity,如何在Activity间传递消息,如何处理startActivityForResult如何处理返回的消息
- 自己写过xml吗?(面试官说的叉ml,一开始没听清说了没有,然后面试官说了就是View和Layout之类的,然后我才听懂。。。)
- 用过什么layout,LinearLayout和FrameLayout的区别
- Service的生命周期
- DNS,具体过程
- 线程,为什么要用线程?单核处理器上用线程有什么作用?具体怎么运作?
- 问了另一个项目。具体做了什么工作?作为组长做了什么?过程中遇到了什么问题?
- 为什么打算法竞赛?过程中最大的收获?
- 职业规划?(并没有,但是每年会设置一些小目标)
- 算法题:二叉树最小深度(递归,然后面试官提示了下又加了剪枝)
- 堆栈,给了一些情况判断变量存在堆里还是栈里
- 指针和引用的区别
- GC,为什么要用GC,发生在什么区
- 接口和抽象类
- 之前的比赛没打好,有进行总结吗
- 设计模式,写个单例吧(写了DCL),为什么要判断两次
- 控件上的数据突然不显示了怎么办?我给第三方接口发请求没收到回复怎么办?
- 反问环节(问了评价,说我java和c++基础还要再多看看,算法是我的优势但是客户端开发不会用到太多的算法)
7.30
下午面完,去吃了个晚饭,回来就收到了感谢信。欸,吃个饭的功夫人就没了。
7.31
又有一个HR打电话过来说我被捞了,不过这次是正式批。。。
** 字节客户端** 一面
- STL
- 多态
- 虚函数
- 不用指针引用是否能发生动态绑定
- 声明Base对象用Derive对象赋值,会发生什么
- 拷贝初始化和直接初始化区别
- 智能指针 要注意的地方
- 在构造函数中使用当前类的shared_ptr会出现什么问题
- 构造函数中调用虚函数会怎么样
- 对TCP和UDP的理解
- 为什么3次握手?2次行不行?4次行不行?
- 滑动窗口
- http1.0/http1.1/http2.0区别
- http2.0最大的改变
- http2.0多路复用有哪些方式
- I/O多路复用 /同步还是异步
- I/O复用系统调用是否阻塞
- 死锁形成的条件 解除死锁 避免死锁
- 什么是系统调用及过程
- 系统调用和普通函数调用的区别
- 算法题:二叉树节点之间的最大距离
- https过程
- 非对称加密的实现,为什么公钥加密私钥解?
- RSA加密算法
字节客户端 二面
- 自我介绍
- 做过的对自己影响最大的项目/功能
- 实习对自己未来的影响
- 浏览器输入URL的细节
- 线程与进程
- 同步与异步
- 串行/并行/并发
- 算法题:圆圈中最后剩下的数字(26’10”~39’50”)
字节客户端 三面
- 自我介绍
- 实习中最有挑战的事情,解决问题的过程
- 字节对齐的原因,规则
- 堆栈区别
- SpringBoot 不会。。
- AOP设计方法 面向切面 不会。。
- 内联函数原理
- 内联的规则,不能声明为内联函数的情况
- 递归函数可以内联吗 不会。。
- 多态和虚函数
- 基类,派生类虚函数表分布
- 重写基类虚函数后,怎么调用基类虚函数
- https加密流程
- 连接建立以后仍然用非对称加密有什么问题,除了慢呢 不会。。
- 对称加密更快吗,为什么
- 网络环境不好,采取什么措施来提升http请求成功率(提示:为什么会失败)
- 应用层有什么办法减少网络拥塞,发的包如何优化
- DNS查询过程中有没有可能失败,一定会成功吗
- 本地DNS缓存没有,不向本地域名服务器请求,有没有其他办法
- 线程同步机制
- 自旋锁和互斥锁的区别,使用场景
- 递归锁有了解吗,递归锁如何如何应对在递归中重复请求锁 不会。。
- 普通互斥锁递归请求锁会死锁吗
- 虚拟内存
- app启动时有很多线程同时启动来请求资源,如何限制最大并发数
- 如何优化数据库增删改查速度,除了索引,缓存 不会。。
- 设计模式了解吗 不会。。
算法题:乱序数组求第k大的元素(小根堆/大根堆/快排分区,时间复杂度最优)
三面被虐惨了,好多问题都是从来没有仔细想过。。。不过面试官很强,会不停的引导,很棒!
出来感觉凉了一大半,慌张了半个小时后收到了HR的好消息,感谢三面面试官! 感谢HR!
所以总结下我的面试:
1、
背概念是没有办法过面试的,必须去探究看到的知识点细节,去理解。
比如get和post,我从网上看来的他们区别,get是获取信息,post是提交表单,但是面试官一个反问我,get不可以提交信息吗,我就不太清楚了。
2、
语言的表达问题,很多概念我们看似理解了,但是把它说给别人听,流畅表示出来,就需要更深层次的理解。
路漫漫其修远兮,找工作还有很长一条路要走。
文末附上大厂学长给我的资料,内容包含:Android学习PDF+架构视频+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 这几块的内容
分享给大家,非常适合近期有面试和想在技术道路上继续精进的朋友。也是希望可以帮助到大家提升进阶
如果你有需要的话,可以私信我【面试】我发给你
如果你觉得自己学习效率低,缺乏正确的指导,可以加入资源丰富,学习氛围浓厚的技术圈一起学习交流吧!