写在最前面:有时候某人的放弃,将会成就你更好的选择!
刚开始面试的时候我真的是处处碰壁,面一家挂一家,面完之后怀疑自我,是不是自己真的太菜了找不到工作,还是真的是像网上所焦虑的那样,Android开发真的是要凉了?这次跳槽经历让我明白,工作本身就是双向选择,一家不行再换一家,总有合适的,千万不要因为别人的一句话就全盘否定自己、怀疑人生,一定要自信。
战况(时间排序)
- 最右二面挂
- 猿辅导一面挂
- 伴鱼offer(两轮技术+一轮HR)
- 顺丰二面挂
- 百度二面挂
- 微博一面挂(一面就问意向薪资,面的还行,要多了没有后续了)
- 老虎证券offer(两轮技术+一轮HR)
- 滴滴一面挂
- 快手简历挂
- 字节offer(三轮技术+一轮HR
- 美团HR面(三轮技术)
- 腾讯HR面(三轮技术)
非技术准备方面
离职原因方面
其实大家换工作的原因,无非就是马云所说的两种情况:“钱没给到位,心受委屈了”。对我而言,更倾向于前者,再加上考虑到自身成长方面原因。但是面试在讲离职原因的时候一定不要过于实诚,请尽量往个人发展这个方向上靠拢,切忌一定不要说现任公司的坏话,尤其是跳槽频繁或者像我这种第一份工作不满两年的,一定要想好自己的离职理由,我有几家公司明显技术答的还行,但是因为离职理由挂掉的。
简历投递顺序方面
如果你对自己很有信心的话,可以直接投你的意向公司,如果信心不够强烈建议跟我一样先面几家体量不那么大的公司涨涨经验看看现在外面的行情,顺便通过面试复盘自己的技术短板,然后再投自己中意的公司。
心态准备方面
既然准备了要离职,就不要被任何其他事物影响心态,心态真的很重要。刚开始面试的时候我真的是处处碰壁,面一家挂一家,后来在一家面试过程中被面试官疯狂嘲讽,面完之后怀疑自我,是不是自己真的太菜了找不到工作。后来也幸亏隔天有一家公司给我发了offer,让我明白了不是自己的问题。工作本身就是双向选择,一家不行再换一家,总有合适的,千万不要因为别人的一句话就全盘否定自己,一定要自信。
技术准备方面
刚开始面试的时候是准备把面试过的所有家都写详细的题目出来的,后来发现写了面经发在牛客许愿offer的都挂了,也不知道是什么奇怪的玄学,后来就没发过了,不过其实面过来面过去就那些问题,做了下面的归纳总结。
由于文章篇幅有限,大家可以点击下方课程链接,查看更多面试题以及答案解析
https://edu.51cto.com/course/32703.html
Android方面
- 试从源码角度分析Handler的post和sendMessage方法的区别和应用场景?
- 谈谈Android的事件分发机制?
- 谈谈自定义View的流程?
- 谈谈你对Android性能优化方面的了解?
- 自定义 Handler 时如何有效地避免内存泄漏问题?
- 谈谈Android中内存优化的方式?
- 谈谈你是如何优化App启动过程的?
- 请回答一下Android进程间的通信方式?
- 请简要谈谈Android系统的架构组成?
- 请简述一下 Android 7.0 的新特性?
- 什么是冒泡排序?如何优化?
- Activity 与 Fragment 之间常见的几种通信方式?
- 对于 Context,你了解多少?
- 谈一谈startService和bindService的区别,生命周期以及使用场景?
- 简单介绍下ContentProvider是如何实现数据共享的?
- 说下切换横竖屏时Activity的生命周期?
- 说说Activity加载的流程?
- HandlerThread 的使用场景和用法?
- 谈谈 Handler 机制和原理?
Java相关方面
- 分别讲讲 final,static,synchronized关键字可以修饰什么,以及修饰后的作用?
- Java 中深拷贝与浅拷贝的区别?
- 什么是反射机制?反射机制的应用场景有哪些?
- 谈谈如何重写equals()方法?为什么还要重写hashCode()?
- 请说一下HashMap与HashTable的区别
- 谈一谈ArrayList的扩容机制?
- 请简述 LinkedHashMap 的工作原理和使用方式?
- Java 中使用多线程的方式有哪些?说一下线程的几种状态?
- 谈谈线程死锁,如何有效的避免线程死锁?
- 什么是线程池?如何创建一个线程池?
- 谈一谈JAVA垃圾回收机制?
- JVM中类的加载机制与加载过程?
- JVM、Dalvik、ART三者的原理和区别?
- JMM是什么?它存在哪些问题?该如何解决?
Android Framework方面
- 你了解Android系统启动流程吗?
- 1.2system_server 为什么要在 Zygote 中启动,而不是由 init 直接启动呢?
- 1.5 Zygote 为什么不采用 Binder 机制进行 IPC 通信?
- Binder有什么优势
- Binder是如何做到一次拷贝的
- MMAP的内存映射原理了解吗?
- 说说四大组件的通信机制
- 简述下 Handler 机制的总体原理?
- Handler 或者说 Looper 如何切换线程?
- Handler、Mesage 和 Runnable 的关系如何理解?
- Handler 为什么可能导致内存泄露?如何避免?
- Handler在系统当中的应用
- ActivityManagerService是什么?什么时候初始化的?有什么作用?
- Instrumentation是什么?和ActivityThread是什么关系?
- ActivityManagerService和zygote进程通信是如何实现的。
算法(手撸代码)
就算法来说,其实大部分公司(除了字节和腾讯)问的都不是很难,一般都集中在数组和链表上,基本就是剑指offer难度甚至直接就是原题。
- 移动零——一个数组有0和其他数,不更改原本其他非0数字的顺序,把0都移到数组最末位(猿辅导)
- 手写栈(伴鱼)
- 数组中只出现一次的数字——剑指原题(伴鱼)
- 判断链表是否有环(顺丰,腾讯,美团)
- 有环链表环的长度(腾讯)
- 反转链表(腾讯)
- 一道贪心——题目太长了且没有原题(腾讯)
- 字符串转数字(百度)
- 回字形打印数组(老虎证券)
- 斐波那契数列(美团)
- 手写DCL单例(字节)
- 二叉树路径和——从根节点到叶子节点是否有一个路径之和等于给定值(字节)
- 最短子数组长度——滑动窗口(字节)
- 手写观察者模式(字节)
- 两个栈实现队列(字节)
- 获取一个VIewGroup的最深深度(美团)
项目
在项目上,一定要能做到融汇贯通,不仅从技术上也要从业务上。比如你做过的一个需求,为什么要做这个需求,这个需求的背景是什么,这个需求上线后带来了什么影响或者有哪些收益,虽然你是个技术,但是你能够知道这写得话肯定是更好的。
其次在技术细节上,要能知道为什么要这样技术选项,这么做的好处是什么,以及能够横向纵向拓展。
除此之外,良好的表达能力也是非常重要的一环,如果不觉得麻烦的话可以在复盘项目的时候把自己做了什么,为什么这么做打个草稿,自己看自己的逻辑以及表达是否通顺,以此来做调整。
最后
offer的话拿到了字节、腾讯还有美团的,我这边最后还是选择了腾讯的offer,已经入职入职一周了,同事很nice,leader是一位非常乐于助人的技术大佬,感觉自己这辈子就跟腾讯磕着了。
标签:diss,字节,offer,自闭,Handler,线程,腾讯,Android From: https://blog.51cto.com/u_16163442/6594486