-
10月12日北京面试,已收到offer。
-
百度
-
一面:
- 算法:给你n个数,找到最大的m个数
- equals和hashcode说一下
- 线程创建的方法?线程池原理说一下?线程同步的方法?
-
HashMap说一下?
-
百度贴吧的子帖的实现方法(主帖里面的评论帖,分别从数据库和移动端两个方面来说一下)
-
如果在一个论坛主界面有很多帖子,并且在主界面上都显示这些帖子的图片(每个帖子9张),怎样避免OOM。(讲了两个思路,一个思路是展示缩略图,点击展示大图,另一个是横向ListView,滑动查看更多,滑出范围对Bitmap进行回收)。
-
图片压缩过程和缓存相关说一下?LinkedHashMap跟HashMap的差别是什么?底层原理是什么?
-
二面:
- 算法:给你一个字符串,判断是不是标准的ip地址。(我写完一个之后,说让我把所有的测试用例写出来,发现有几个遗漏掉了,面试官说,让我根据这些测试用例重新再写一下,考察代码扩展优化能力。)
- 自我介绍,聊聊项目,问我数据来源和数据库设计比较多。(项目上聊的比较多)
- 举了个数据库联合查询的例子,写个简单的SQL语句。(join)
- TCP的三次握手说一下?为什么是三次握手?为什么是四次挥手?
- TCP的滑动窗口原理知道吗?(我说原理不清楚,但是我知道他解决的是什么问题。)
-
hashMap是线程安全吗?如何实现线程安全?
-
Android的持久化存储方式说一下?
-
Android的启动模式和场景说一下?
-
Android的ANR知道吗?怎么避免?
-
内存溢出和内存泄露说一下(中间有提了下Handler)
-
三面:
- 自我介绍,项目介绍
- 项目中你遇到最大的问题是什么?怎么解决的?(感觉是压力面,会把你说的话往不好的方向诱导,中间多次解释)
- 了解生产者消费者模式吗?他主要解决的是什么问题?队列数目为0的时候是怎样的?描述一下整体过程中线程的状态,怎么实现的是线程同步,不要用sychronized来说。(emmm,设计模式一直是我的薄弱的地方,了解的不够深入,回答一点后就立马再被追问,被怼的很惨)
- 平时有什么兴趣爱好?
- 有没有男朋友?
- 报的上海,如果调岗到北京怎么看?
- 有什么想问我的吗?
-
面试准备
Android进阶学习《Android开发艺术探索》,面试必读,重点知识我反复看了好多遍。
《Android内核设计思想》,这本书写得很深,读起来也比较晦涩。需要有一定的理解能力。
java基础学习了《java编程思想》,看源码。
java总结学习《码出高效》,这本书对知识点总结的很好,面试回答的时候我都是根据这本书的总结来回答的。
jvm学习《深入理解java虚拟机》,必读,我是背了重点的内容,对于安卓来说,只需要熟悉重点章节就可以了。
大厂基本上不太看重具体的技术,无论你是Java还是C++,比较看重思路与抽象的解决方案。
结语
我一直觉得技术面试不是考试,考前背背题,发给你一张考卷,答完交卷等通知。
首先,技术面试是一个 认识自己 的过程,知道自己和外面世界的差距。
更重要的是,技术面试是一个双向了解的过程,要让对方发现你的闪光点,同时也要 试图去找到对方的闪光点,因为他以后可能就是你的同事或者领导,所以,面试官问你有什么问题的时候,不要说没有了,要去试图了解他的工作内容、了解这个团队的氛围。
找工作无非就是看三点:和什么人、做什么事、给多少钱,要给这三者在自己的心里划分一个比例。