真零offer渣硕客户端十面十凉经验分享
Previously
真算法渣硕,无实习,临时转客户端,刚学java和Android一个多月,开发基础薄弱,0 offer。
一.六面腾讯
1) 7.8腾讯第一次——客户端看点(凉)
- 项目经历
- java 三大特性?java 可以多继承吗?如何实现多继承?多态有哪些类型?
封装,继承,多态;
不可以;
接口
静态绑定、动态绑定。 - 青蛙跳台阶, n个台阶,每次可以跳一步或两步,共有多少种跳法?
f(n) = f(n-1) + f(n-2) - 如何快速找到链表的中间结点?
快慢指针 - 数学问题:1000瓶酒,用最少的小白鼠找1瓶毒酒
2) 7.27腾讯第二次——客户端看点(凉)
- 自己讲项目。用到的技术,遇到的困难。
- Java\C++的区别?
- C++ 什么时候可能发生内存泄漏。
- 开发中有没有用过多线程?
- 多线程为什么不安全?
- HTTP GET/POST方法。HTTP在哪一层。
3) 8.11 腾讯第三次——微视客户端一面(过)
- 项目
- 处理屏幕点击事件的过程?
- Activity的启动方式
- 刷题:输入m, n,(m%2n == 0), 初始符号sign = -1, 1到n,每m个数进行一次符号翻转,求和。
4)8.13 腾讯微视客户端二面(凉)
项目介绍, 怎么完成的?讲遇到的问题,用到的技术。
APP的功能实现,RecyclerView, Intent数据传递,OKHTTP请求,新建子线程,Base64图片编码。
为什么想来做客户端?
线程与进程的区别。
谈谈Java内存管理模型。Java的类放在哪个区?Java的静态变量放在哪个区?
Android活动的启动模式
Handler消息传递机制?MessageQueue如果有延时消息该如何处理?
HashMap的结构?什么时候会发生扩容?
Java的动态代理。
Java的类加载机制。ClassLoader。
Android的架构。
怎么学习Android的?遇到问题怎么解决的?
5)8.18 腾讯第四次——部门未知一面(凉)
- 如何自定义一个View
- 事件分发机制
- 进程和线程的区别。线程崩溃会不会引起进程崩溃?
- TCP和UDP的区别。三次握手与四次挥手。那UDP能实现可靠传输吗?
- 说一下怎么反转链表、快速排序。
- 撕题:判断是否符合日常书写要求,是否超过int范围,字符串转数字。
6)8.20 腾讯第五次——腾讯音乐电话突袭试探面
- 什么是线程阻塞?如何在程序中避免阻塞?信号量的作用。
- 进程间通信方式?
- c++的虚函数的原理。(因为我写了会c++)
- 为什么析构函数要声明为虚函数
- 如何在一颗树中找到第一个比某数值大的结点。
- long转化为double数值会不会变化。
- 大端存储与小端存储
7)8.25 腾讯第六次——腾讯音乐一面(凉)
- 四大组件
- Activity的生命周期。Activity A启动ActivityB,再回到ActivityB。这个过程A的生命周期。
- Activity的启动模式。
- 事件分发机制。
- 写二叉树非递归中序遍历
- 写快速排序
- 进程和线程区别。
二.字节飞书客户端
8.13 一面(凉)
- TCP 和 HTTP的关系?socket与他们的关系?
- 进程和线程的区别?线程的轻量级的体现在哪里?
- 死锁发生的条件。
- linux中如何创建进程和线程。
- 什么是缺页?内存、磁盘?为什么会发生OOM?
- Java的synchronized的用法?为什么它是重量级锁?有哪些轻量级锁?
- Java 堆和栈的区别?分别如何管理空间的?
- Java如何做内存回收?哪些对象可以回收?
- 深拷贝与浅拷贝的区别。
- 垃圾回收算法有没有了解?说一种。
- 了解哪些设计模式?
- 说一下树的层序遍历?
- 是否了解SOLID原则?(面试完自己去查才知道是设计模式的原则)
- 单一职责原则(SRP)
- 开放封闭原则(OCP)
- 里氏替换原则(LSP)
- 接口隔离原则(ISP)
- 依赖倒置原则(DIP)
三.京东零售
1)8.12 一面(过)
- https 和 http的区别?对称加密与非对称加密的区别?
- JNI的调用过程?Android JNI包加载的代码?
- 不通过AS,由源码打包成APK的流程是否有了解。
- 包访问权限——可以包内访问,不能包外访问,应该如何设置?
- 有没有使用过Fragment?
- Android 的 Activity的启动方式?生命周期?
- 点击多个重叠View的事件分发机制?
- Bitmap的可能问题?用过Bitmap哪些函数?(OutOfMemoryError)
- 了解过哪些图像压缩算法?
- wbmp图像格式有没有了解过?
2)8.17 二面(凉)
Android的四大组件?什么是content provider。
activity的启动模式?
service的两种启动方式?两种方式生命周期的差异。
显示Intent和隐式Intent。Intent可以传递的数据类型。【隐式定义Action、Data、Category;基本数据类型和Parcelable】
持久化存储方法。【SharedPreferences、SQLite、共享文件、ContentProvider】
IPC通信。AIDL。【Socket、ContentProvider、AIDL、管道、共享内存、Messenger】
多线程。线程的状态有哪些?
有哪些线程池?
知道哪些锁?synchronized。ReentrantLock用过吗。【可重入锁】
Android子线程与主线程的通信方式?【Handler、AsyncTask、runOnUiThread】
Java的四种引用。
String和StringBuilder的区别。
HashMap的结构?遍历方法。keySet()?
keySet(), values(), entrySet()
Android布局的include、merge标签【布局优化】
Android中的像素单位。【dp, px】
Android序列化 【Parcelable】
Android 两种IO流 【字节流、字符流】
Android动画的类型。【视图动画、帧动画、属性动画】
Java 类加载机制。双亲委派模型。
四.网易云音乐
8.14 一面(凉)
- 项目。
- Handler消息传递机制。一个线程可以有几个Looper?
- Android里有哪些布局?如何选取合适的布局。
- MVC和MVP的区别?
- TCP和HTTP的联系?TCP为什么要第三次握手。
- HTTP和HTTPS的区别。HTTP有哪些状态响应码。HTTP如何实现分段传输。
- final可以修饰哪些?被final修饰都会怎样?被final变量置为null之后,值还能不能再改变?
- Java的Error和Exception的区别?Error,程序可不可以处理?有哪些Error、哪些Exception?
- Android里有哪些设计模式?
- 用过哪些框架?OKhttp的设计和源码有了解吗?
五.经验总结
- 有的面试官不让你做自我介绍,上来直接问。不管有没有,都要和面试官沟通好,做一个好的自我介绍,让他了解自己的真实水平。不然他以为你精通客户端,上到问设计架构,下到问源码或者很细的基础知识。
- 问到感觉超越自己知识水平的题还是不要乱说,并且要及时阻止面试官继续往那个方向问,比如京东二面后面那些很细的我几乎都不会但还是任其摆布了。最好要学会引导面试。
- 有些问题虽然真的不会,但还是可能有发挥空间的。可以先主动承认自己不是很了解这个东西,再说“根据我对另一方面的了解,如果是要我去设计这个东西/解决这个问题可能会怎么做”,“这个我不是很熟悉,我可以跟你讲讲另一个类似的东西”。我觉得这样回答对错也关系不大了,而且他会觉得你善于思考。
- 最好不要所有的问题回答得太像背面经,一个问题不要回答得太浅,对知识也要理解地透彻一点。不然他察觉到后,会想办法来拆你台的,或者问你大量的问题。
- 基础的还是要掌握好的,我面挂其实主要还是开发基础不好。比如手写快排、非递归遍历二叉树。我当时是真没写出来,怨不得谁。