开场废话
咳咳,介绍一下,我是来自西北地区某不知名一本邮电类院校的大三学生,在大一加入了移动应用开发实验室,找实习阶段面了三家,分别是百度、字节跳动和创业公司,拿到了字节和创业公司的offer,百度那边,目前还在备胎池里面泡着,问了两次发布招聘的那个人,都说三面消息还没通知。创业公司是我第一个投用来熟悉面试的,毕竟人生第一次工作面试嘛。
实习差不多就这样了,也不想当什么offer收割机,字节跳动是我比较喜欢的公司,最终选择去字节跳动。百度那边就放弃了,本来也不想去百度,不喜欢他们的企业文化,对百度没啥好印象,去年学长实习了两周就被裁了,刚回到学校准备期末考试,结果就打电话说不用来了…
8、9、10、11月真的是超鸡累,8月17暑假留校结束了,其他同学基本都回去了,而我又跑到学校来了,每天LeetCode10+道题目+35英语单词。9月先是匆忙的赶完自己的第二个项目,然后就每天在整理补充学习过知识,写笔记,写博客,做简历,熟悉简历,面试准备…
到了周末也闲不下来,周六早早起来继续学习。周日也是早早起来,刷几个题,然后打LeetCode周赛,算法很重要啊,现在面试都比较重视算法能力,自己也比较喜欢做题练练思维。
下面两张就是我近几月的 contributions 、blogs,内推的时候也是收到了肥美
二字好评。
我的一些感悟
- 在做算法题时一定不要慌,尽量先暴力写,写的过程中思考思考怎么优化,最后面试官肯定会问你还有优化的方法没
- 对于不熟悉的领域,不要直接说不会,尽量先扯一扯相关自己了解的,说不定就扯到自己熟悉的领域了
- 对面试官的态度一定要好,根据面试官的性格,适度表现个人性格吧
- 另外,对于复习,一定要扎实,不是说看一两遍写一两遍就ok的,如果拿到自己的文章目录,能做到流畅的将一系列知识讲下来,这样才能保证,面试中不卡壳。
- 简历上的东西要很熟悉,不要埋坑
- 还有就是需要准备一些智力题和扩展类的题目,我都不知道面试还会问这种问题,面试官说了一个智力题,我第一反应用hash做,但是面试官说让我抛开计算机思维,这是一个高中生都能回答上来的问题。
百度一面面经
数据结构:
数组链表的区别、理解
栈和队列理解
认为最快的排序,快排思想、复杂度、二叉树的理解、前中后遍历
哈夫曼树,顺带问了安卓的文件压缩
稳定排序的理解
动态规划、深搜广搜,回溯
Java:
抽象类、接口的理解和区别
多态理解
面向对象的理解
hashmap的实现,计算hash、冲突解决、红黑树的理解
==和equal
值传递和引用传递
static、final关键字,抛出一个使用的场景分析
多线程
操作系统
线程进程理解、区别
Android中的多进程如何写
Android:
上来先来一波四大组件,生命周期,场景分析
进程相关,应用默认几个进程,如何实现多进程
Fragment理解,生命周期,项目如何使用的
RecyclerView相对ListView的优化,局部刷新,复用策略
Service的理解作用,所处的线程
ASyncTask实现,线程池和Handler
消息机制的原理
内存泄漏、OOM场景及解决
我项目View的优化,嵌套层次,性能检测
介绍第二个项目,为什么写这个项目。。一波乱吹
讲了富文本的实现,图片的加载
项目插件化的具体实现
分析了ClassLoader和部分Activity启动流程
Intent如何替换的
插件资源如何加载ÿ