2016秋招安卓面经(蘑菇街+BT+网易杭研+CVTE等)

2016 届秋招面经

蘑菇街 +BT+ 网易杭研 +CVTE+ 唯品会

         CS 本科生,大三寒假确定方向, Android 学习时间 1 月至 9 月,无编程功底,无算法竞赛经历,无一线互联网实习经历,无国家级奖学金。

         希望这篇面经能给有同样起点或者同样经历的同学,带来帮助。

面试内容(岗位均为 Android 研发):

一、面试时间:

CVTE 7.28-8.28

网易杭研 8.10-9.30

腾讯校招 9.16&9.18

唯品会校招 9.16

百度校招 9.18-25

蘑菇街 9.30&10.1

腾讯 10.19-10.23;

二、面试方式:

 

 

CVTE

网易杭研

腾讯

唯品会

百度

蘑菇街

腾讯

一面

电话

电话

现场

现场

现场

电话

电话

二面

电话

视频

现场( X

现场

现场

电话

电话

三面

电话

电话

 

现场

现场

电话

电话

四面

现场

null

 

null

null

null

 

 

三、过程题目和技术点:(蓝色为交流环节我问他的问题,前后顺序按面试时间

CVTE

一面:

1.       自我介绍

2.       项目点为什么要用 view 不用 fragment ?同样 fragment 可以解决缓存(用了 view ,并且设了 map 作为缓存,为了模拟 activity 栈重制了新的栈来实现相同的回退功能,需要处理连续点击和多次点击的问题,还需要解决连续点 view ,缓存增大而 oom

3.       用了什么设计模式?为什么要这么用?(举例了观察者 + 工厂)

4.       谈一下 Collection 包: hashmap 底层实现,用了什么方法解决 hash 冲突(基于 jdk 版本),具体是如何实现( jdk1.5 链表头插还是尾插),为什么不安全?如何变得安全( concurrent 包下集合类), concurrentHashmap 实现原理是?

5.       Executor 框架说说你的理解?

6.       结束一条 Thread 有什么方法? interrupt 底层实现有看过吗?线程的状态是怎么样的?如果给你实现会怎么样做?

7.       Io nio 有没有了解?

8.       现在需要在四大组件中传数据?如何传,方法有哪些(需要自己再具体说什么情况)?

9.       缓存算法除了 lru 还认识哪种?

10.   Java 中有内存泄露吗?是怎么样的情景?为什么不用循环计数?

11.   ANR 产生原因?怎么定位?

12.   ContextImpl 的源码使用的设计模式?为什么你认为其中有外观?

13.   评价一下我的表现?有什么技术点需要补充?

二面:

1.       上次一面的时间是什么时候了?(半个月前)

2.       做的最深的项目?解决了什么问题?

3.       情景题,在一个 app 中,只有在一张 activity ,所有功能业务逻辑在里面实现,现在报 ANR ,你会怎么做?(代码层面:耗时操作( UI 、网络、数据库),工具层面: trace crashHandle

4.       不停在 new 一个很大数组,初始化它,然后又把 reference null ,这样子手机会不会卡?(这个问题还没很深研究,当时答了内存抖动 +stop the world

5.       Jvm 自动内存管理、如何实现对象的自我救赎?

6.       Android 系统启动流程?

7.       有没有看过业界 APK 反编译源码?

8.       平时看什么书?

9.       评价一下我,技术团队有用到什么开源框架?有没有自己放出开源?

三面 HR

1.       有点起了我老底的味道,我还以为是来查水表。

 

        

四面(现场,这是唯一一次有 3 个面试官来面,其中一个是一面的面试官):

1.       描述项目,当时是用了什么架构?还认识哪些架构?如何改造?

2.       当时为什么要用 Observer

3.       obverser uml 类图 + 代码实现,原生 jdk 中观察者模式有哪些缺陷?

4.       还有用了哪些设计模式?(工厂)

5.       有见过其他的设计模式吗?(当时说了一个责任链和重说一面的 contextimple

6.       实现一个链表的插入( 4 分钟计时)

7.       判断链表有环

8.       单例模式 DCL violate 起什么作用?为什么要 sync .class 而不是 this ?( 3 分钟计时)

 

 

网易杭研:

一面:

1.       自我介绍

2.       Android ClassLoader java 中有什么关系和区别?

3.       熟不熟 jvm ,说一下 Jvm 的自动内存管理?

4.       语言基础, String 类可以被继承吗?为什么?

5.       Final 能修饰什么?(当时我说 class field method ,他说还有吗?然后又叫我不要在意,后来回想起,应该是问到我在参数里面要不要用 final ,接下来是因为匿名内部类)

6.       Java 中有内存泄露吗?(先说本质,再结合 handler+ 匿名内部类)当时如何分析的?

7.       描述下 Aidl ?觉得 aidl 有什么缺陷(这里在这个问题上回答有欠缺)

8.       评价一下我,如果顺利进网易,需要往技术栈加什么点尽快投入业务?

二面:

1.       用过什么开源,举一个例子?( volley

2.       Activity 生命周期?情景:现在在一张 act1 点了新的 act2 ,周期如何?

3.       Act launchMode ,有没有结合项目用过(自己的程序锁和微信的 PC 端登陆对比,不过我现在又发现,应该大约估计可能是动态加载的一个缺陷,如果有找到相关信息,请务必跟我说。具体问题就是,当在 PC 端登录时, Android 终端的微信会跳出,即使 wechat task 不是在 fore ,当按下确认,返回的是 wechat ,而不是自己先前的 app

4.       View 的绘制原理,有没有用 canvas 自己画过 ui

5.       以后想做 Android 什么方向?(中间件 +SDK

6.       怎么看待前端和后端?

7.       如果学前端会如何学?

8.       优缺点?兴趣?

9.       想不想来杭州?

10.   评价一下我?往技术栈加什么?

三面 HR :常规问题( 10 分钟,这个男 hr 是最爽快的)

1.  为什么想来网易?

2.  有投其他公司吗?

3.  网易最吸引你的是什么?

4.  想来杭州吗?

5.  评价一下我?

        

 

 

腾讯(被挂)

一面:

1.       自我介绍

2.       项目描述

3.       如何保证资金流安全?(这里没答好,直接把我挂了,先前并没有考虑过这个问题,面了这么多次也没有被问这个点,导致雪崩)

4.       Oom 是如何解决?

5.       除了软引用还知道什么引用?

6.       Jvm 自动内存管理(什么时候触发 gc )?

7.       有什么要补充:(跟他讲了动态加载还有一个底层源码)

8.       根据面试过程,有什么建议给我?(我当时就觉得很有可能就挂了,所以就问建议)

 

二面(一面之后当晚我查到被挂,心态没有调整好,但是 2 天后又把我复活了,然后又挂了):

1.  自我介绍

2.  你是怎么准备面试的?

3.  做过什么项目?项目思路是?

4.  平时有什么兴趣?

5.  自己写的工具类和 uil 相比,如何?

6.  后续就是讲了他自己对移动端发展的看法,受教很多。

7.  现在有个机会可以对刚毕业的自己说些话,你会跟他说什么?

 

 

腾讯 SNG:

一面:

1.       自我介绍

2.       动态加载主要问题

3.       插件化

4.       Assetmanager 获取资源原理和资源获取原理

5.       项目 Oom 异常解决方案 + 用户体验优化方案

6.       Touch 传递机制 +listview 滑动冲突

7.       Volley 底层实现

8.       为什么不能用 volley 请求大数据

9.       后续流程如何走?

 

二面:

1.       自我介绍

2.       android 学习时间

3.       为什么不考研

4.       Smali 语句学习情况 + 反编译

5.       如何捕获插屏广告?如果广告是嵌入在应用主流程内如何处理(只讲了如何捕获 launch 下的 activity ,嵌套在主流程逻辑内的想不到,问了提示也没回答)

6.       Jvm 的自动内存管理

7.       Jvm 中软、虚引用的区别

8.       Java nio 的认识

9.       Tcp 三次握手, tcp udp 的区别

10.   Volley 底层实现 + 设计模式理解

11.   Imageloader 缓存策略

12.   后续流程如何走?

13.   sng 目前在 android 端遇到什么问题?(他回答是机型适配问题)

14.   对我的建议是?

 

HR 面:

1.       之前参加校招吗?

2.       这个月又如何准备?

3.       谈谈优势?

4.       腾讯哪里吸引你?

5.       以后会在什么部门?是不是一二面面试官带我?

 

 

 

 

 

唯品会:

一面:

1.       项目如何解决 oom ?响应速度是怎么优化?电量消耗如何优化?

2.       描述一下 Aidl android ipc ?( binder 机制没跟他讲得很深)

3.       屏幕适配使用的方案?有没有辅助的工具帮助?( hyviewer

4.       如何分析内存泄露?(代码 + 工具 traceview+mat

5.       ANR 呢?(我忘记了 trace

6.       View 树绘制?如何优化布局?

7.       事件传递原理?

8.       uil 的框架如何设计?有没有用过 glide ?(结合了 fresco 的分析)

9.       Volley okhttp 底层实现(也讲了 okio ),为什么说 okhttp 高效?

10.   Listview 的优化(同一布局,左为 bm ,右为 text )?

11.   Apk 瘦身可以关注什么点?(这里忘记了说 so 库,然而他也不会)

12.   评价一下我

 

二面:

1.       这里的项目的描述的 xml ,你项目不是 native 的?

2.       有没有接触 hybrid webapp ?怎么看待?

3.       有用到什么设计模式吗?开源框架呢?

4.       HotFix Xposed 的一些小应用(没有深入,只是讲了动态加载原理和需要解决的问题,也说了 dynamicloadApk multi 分包还有 Xposed 中的 hook

5.       以后想如何发展?

6.       唯品会会如何培养新人?是不是由你带我?目前唯品会用到什么技术点跟我技术栈相关?

 

三面 HR 50+ 年纪面试官,素质差,不尊重面试者,具体可以搜知乎):

1.       对公司的看法?

2.       为什么主页不设搜索栏?

 

 

 

 

 

百度:

一面:

1.  自我介绍

2.  讲一下动态加载技术点?

3.  对目前移动圈的看法?

4.  android 的开始时间?

5.  适配优化屏幕适配接触到什么方法?

6.  Binder 机制(只深入到 framework

7.  View 树绘制 + 事件分发

8.  海量字符串 ( 他给我的样例如下: ABCDE,ACD,BCDF,EF) ,如何插入数据库使冗余度最低? Trie + 不知道什么遍历,第一次见,数据库存的是 3 个字段,字母,该字母第一次遍历的序号,该字母第二次遍历的序号。可以做到时间复杂度 O N ),至今都没想出来……如果有人看过类似的题请务必告诉我。)

二面:

1.       不用除号实现除法(一开始需要考虑小数,后来面试官说降低难度先整数,然后优化大数的情况,确认了两次思路)

2.       Contextimpl 源码,几种 context 的区别

3.       如何实现通讯? Binder 机制(我只将了 aidl framework 层面,面试官把 /dev/binder 也讲了,受教,被人教做大人,后来吹比发现他是做 C 驱动开发)

4.       一个数组,找出只重复一次的元素,并且返回下标是最小的。时间复杂度要求 O N +O 1 )(一开始只想到了 O N +O N ),后来问了提示,可以实现到 O N +O 1 ),但是空间复杂度上去了,然后他给出最优解)。

 

三面:

1.       高校教育和培训班看法?

2.       C++ java 的区别?后来我转到面向过程和面向对象,结合 uil

3.       Ios 有接触过吗?学习成本问题吗?

4.       Android 项目简单描述非技术角度?(动态加载)动态加载的优点,面向开发者和面向用户角度?其中我答到了 65535 方***爆,然后他说小伙子太年轻, naive

5.       以后有什么规划?

6.       高级工程师所需责任?

7.       了解 android 什么新技术?( hybrid ,这里答得不好,应该往移动端统一角度来答)

8.       N 根绳子,质量不均匀,并且燃烧速度不均,但是每一条烧 1h ,现在需要测量出 1H+15min 。( cracking 改题)

9.       优缺点

10.   兴趣

11.   最后给我看了一下他对 65535 方法数的研究,我也是醉了。

12.   个人点评?负责哪个部门?是不是以后你带我?

13.   百度 200 亿 O2O 你觉得前景如何?会对你带的部门产品线有什么影响?

14.   如何看待今年互联网的资本寒冬?

 

 

蘑菇街:

一面:

1   自我介绍

2   在项目中为什么要用动态加载?最大的问题是什么?怎么解决资源管理问题(这里我一直以为 AssetManager 是服务,然后又被面试官教做大人,简单来说就是装逼然后失败了)

3   Binder 机制说一下(由 application framework kernel 基本讲了一下要点,但是电面实在是很影响表述没有画图,他最后也听得很蛋疼)

4   Android 源码看了多少 G ?说一下(举了 contextimpl

5   屏幕适配接触到什么方法?

6   java 内存泄露是怎么样的?(本质 +handler 例子)

7   Handler 机制?

8   情景题,把 handler static ,里面需要对一个 view 更新,会不会内存泄露?(可达性分析)

9   UI 接触得多吗?有没有用过 canvas 画过图?

10.   事件分发?如果有一个 interr ,会……(这里我听不是很清楚,电话信号,然后我就把整个事件分发原理说了一下,然后他说我讲错,我也是醉)

11. 个人评价?会不会有下一面?(问这个因为觉得装逼失败,非常有可能被刷,他告诉我可能一周后,结果二面就马上国庆 1 号面)

 

二面:

1.       自我介绍

2.       android 多久?

3.       怎么学习?

4.       项目里面遇到什么难题,选一个讲一下?(动态加载,还有一面被教人教做大人的过程)

5.       平时有什么兴趣?

6.       Volley 底层实现?( okhttp 没问)

7.       自己写的图片加载工具类谈一下?(结合 uil 谈了一下)

8.       有没有了解新技术?了解到哪些?讲一下?( hybrid+react+ 个人看法)

9.       动态加载还遇到什么困难?(结合了 dexposed 其他一些热补丁聊了一下)

10.   个人点评

11.   蘑菇街目前 android 团队架构

12.   目前有哪些 android 技术难题所遇到过?

13.   目前用了哪些开源?我还需要接触哪些?( hotpatch + xposed ,个人认为主要还是受手淘影响,估计内部框架也是比较类似)

14.   怎么培训新人,以后是不是你来带我?

 

三面:(个人感觉是真的专业 HR

1.       自己介绍面向非技术

2.       谈一下优缺点,为什么有这个优点?如何体现?

3.       为什么想来蘑菇街?

4.       目前手头有多少 offer ?薪资?

5.       蘑菇街跟百度网易对比最吸引你?地点杭州有没有问题?

6.       蘑菇街 offer 会不会调岗?

7.       怎么带新人? mentor 制?

 

 

 

 

 

 

 

 

应对策略:

         非技术准备:

1 广度容易量化,深度难以量化;广度:写过爬虫之类,项目里面有用到某个技术;深度,针对面试官或者公司整体来进行评估难以量化。如 熟悉 TCP/IP 协议簇 熟悉 JVM” ,“熟悉”一词难以针对各公司统一衡量,有的是 GC 算法的原理,有的公司却需要手写 GC 算法的伪代码实现

2 、本科生和研究生,要求一样;没有优劣势。

3 、电话面试有一定的影响,一是普通话流利清晰程度,第二就是不能画图说明。

         4 、技术( Android 研发)角度和自身经历,技术难度:明星创业公司 >BAT+360> 一线互联网 >= 一线工业公司 > 创业公司(没有面过华为中兴和国企)。

         5 、内推,不等于走后门,不会降低要求,只是公司提前抢人。(公司内高级别的员工内推就除外,学院也有这个资源)。

         6 笔试分数是淘汰工具,面基础水平还有面试官的评价,才是择优,对后面的面试影响会比较大

         7 、分配好体力和精力,坚持锻炼

         8 校园学生组织经历不重要(面向技术)

 

         技术准备:

1 CS 基础:网络,操作系统,数据库,编译原理, C/C++

2 、算法和数据结构,需要刷题

3 、语言基础(擅长的语言的特性,例如 java io ,并发,集合 );

4 Android 机制体系(其他研发类岗位我觉得也是相同);

5 、竞赛准备( 算法比赛里的奖牌, ACM Topcoder   ,蓝桥杯, 阿里天池,编程之美,还有几个算法网站的排名, leetcode )和实习经历(一线公司实习经验)

所以在操作系统上面我并没有去听课,逃了一个学期,从 5 月份刷足一个月的题,水平比没刷的时候是高了很多对比自己,刷题可以正反馈给语言基础。至于 android ,看书 + 看源码,关注高质量的团队博客和文章是很有必要。特别是需要准备几个特别肉的点,让他问不倒你,满足他的技术深度要求。我在我的笔记里面准备了大概 80-100 个知识点,每面可能只会问 10-20 个,占不到 30% ,所以要尽可能准备最肉的,这种最肉的最好找拉开水平的,例如新技术点,例如系统设计,设计模式之类。对于一些新技术点,很容易会拉开别人的距离,我估计,接下来移动端的发展,最热的可能就是 react native for android ,因为这个中间件意义非凡,还有关于系统安全防范上也是值得去挖。在技术准备后面会有附带的个人整理出来的“面试题提纲”。

 

面试看法:

明星级创业公司注重广度深度理论和实战,内推阶段简历要求高,蘑菇街在内推简历关就把我刷了,豌豆荚,美团,猿题库, glow ,今日头条也有同样的情况,没有奖牌或者 BAT 级别实习经验容易被刷。校招阶段可能是因为运气好,在深度可能达到要求,然而又没怎么问广度。唯一需要斟酌的问题是这种类型的创业公司,发展前景如何,潜力如何,值不值得放弃 bat 镀金 的机会等等

百度面试中,设了 2 面的基础面,一面是考理论知识,二面是算法编码能力,我也是运气好,第一面除了 Android 系统之外, CS 基础没有问我,算法那题面试官师兄说在那天并没有一个人答出,我是当天最后一个面试;而二面面试官师兄也给我放松了要求;总的来说,百度对基础要求是我面过的比较全和深,很多面经也是有这个看法。对于算法题,是逃不过的,代码面试一定要过关,只是我运气好,百度只是写了一次代码;写出来之后被问了几个优化的问题,一时间没有思路,但是还是主动问他要了提示,个人觉得算法题是不能回避,在后面感受中再说一下。三面主要考察的是非技术方向,除了新的技术点还比较在意规划还有视野上面,这面面完出来感觉可以更好,在非技术层面上语言组织或者见解角度可以更深入;至于腾讯一面,目前回想,其实应该要把重点放回 CS 基础和算法上面 ,因为根据目前了解,腾讯对移动端, java android 总体不会问很多,可能与内部开发有关。当时应该用 CS 基础和算法过关,而不是 android java 基础,这样子可以避免项目经验被问死,然后他觉得你整体很鱼这个问题。而腾讯二面,虽则被复活,最后还是挂了,但是这面是我收获最大的一面,现在回头想了一下,那面貌似是我在面试他,他跟我 55 开的讲话,如果早点面上这位总监……然而并没有如果,在这面主要是“交流”(虽然都是他在讲,我在听)对移动端的看法,对 android 技术框架的发展 还有对系统设计的一些经验。(一开始以为过了,但还是挂了)。

 

网易面试中,一面主要是语言基础和 android 机制基础 ,最深的就是二面面试官老师,那种引导是跟 cvte 二面面试官一样,在我没什么思路的情况会给我充足的提示,不过一般我都是会跟他确认是不是要问我某个知识点至于唯品会,当天腾讯一面结束,下午是面唯品会,对于面试流程是比较好的, 一面到底,不用等几天;在一面主要是问简历上的问题,但是感觉对深度并没有过多要求,简历上的问题他几乎问了 50% ,但是深度都是由自己发挥。而二面的话,当时面试官可能有事,就问了我几个目前比较热的技术点,热补丁和动态加载,问完就结束。至于 HR 面,知乎上有评价,可以去搜搜。

CVTE ,秋招第一间面试公司,可能因为简历问题, 我发过去的简历是比较久远,所以面试官一直问我 java 基础和 android 基础,并没有很深入问其他。这也是简历做得好不好的一个影响,问题也是比较浅,体现不了深度,但是对于二面面试官,还是比较好的,在引导面试者上面很能体现他的能力。

创业公司里,我面了一次科韵那边的一家公司,华南资讯,当时我投的是实习生,不是正式员工,只问了一个问题:说一下拦截黑名单怎么实现?当时我讲了反射还有 android 版本的问题,需要对代码实现有兼容处理。然后他说可以了。我说可以了?他说可以看出深度和态度,当时我就醉了。然后问了一下他对我简历有什么改进。也非常感谢他对我提了意见,后来有了一次简历的优化。

 

面试技巧 (个人常用):

1 、由点及面,发散式回答(结合问题本质 || 具体项目经验 || 问题解决 || 问题设计 || 问题影响);例子:“ jvm 垃圾回收算法是什么?”, Java 垃圾收集,你能不能谈谈? 关于这个系列的问题, jvm 自动内存管理: 首先是触发时间(新生代、老年代结构, minor gc/full gc 的触发条件, gc 的算法   -> 面向的对象(可达性分析搜索不到的对象,需要考虑自我救赎的对象) -> 执行了什么动作( gc 收集器的动作,并行和串行,例如有 stop the world )。缺点:冗余(两位面试官曾经提到这个问题)

2 、在明确好强项后,遇到不会的技术问题,偷换概念或者主动拿提示。例子: C java 的区别,转换面向对象和面向过程;代码面试可以问他拿提示,不能轻易放弃。好的面试官,往往都是看你会什么,不好的面试官,专门抓你不会来的问。所以很经常在面试里面都会很有发挥的余地,都是自己来主导,除非是像百度二面这种生撸算法题。

3 揣摩他要考察目的,准备亮点。例子:谈一下优缺点和比别人的优势,什么兴趣的这样的点,非技术问题。引用一个例子,一个产品类的面试者,被问兴趣,面试官并不是想要你说我兴趣是 xx 球,他很有可能是想你给个闪光点他,那个面试者说 我没事的时候喜欢坐一下公交,看一下公交路线,有哪些重叠的地方,如何优化……

 

 

校招感受 (主观):

       寒假到 3 月,找了以前的同学聊了一下,自己走去在腾讯的表哥要求当场面(虐)了一下,看到同级的大牛找到实习,种种的刺激,还有很多负面的能量、情绪,需要好好控制,然后转到自己的驱动力。

       3-6 月,经历阿里和腾讯春招之后,明白那种差距,至于这种差距怎么明白,一方面自己找了面经,一方面自己直接偷听了 2 个面试者的面试,当时那种刺激更大。回来就开始反思,要如何达到那个高度或者弥补差距。回想在这 4 个月里面,一方面要放弃很多东西,去补别人 3 2 年的差距,会非常累,三点一线。

       直到 7 8 月,阿里开始内推,我发了简历过去,简历被刷,当时那种打击也不是一两句能说出来,当时更多的是那种对自己的技术的怀疑,所以就重新大改简历,重新再补几个肉的知识点。然后再投几家公司再试,而且面对学校内同届的同学,越来越多找到实习,心里知道是自己是不能急,但是会慌,那种心态也是很难表达。

       后来遇上阿里缩招,知乎上, Q 群里也是炸了,几个面试官都有一致的观点,如果这个系列消息再迟大概半个月或者 3 个星期放出来,一方面业界公司可能不会跟风缩招,二来他们可能就抢不到那批实习生,给其他人有更多机会,今年的互联网就业形势可能会更好一点。

       网易和 cvte 当时是主要是为了腾讯做准备,但当时面完腾讯的时候,知道自己挂了,那种不服、不甘、郁闷,那种半年来的努力被人否定的感觉,并不好受,特别是对比其他人,都是问一些较为基础而又在 Android 技术范畴内的问题,哪怕是算法题,也是在能力范围内,当时就心态出现失衡,心里会想为什么他有这么好的机会,而自己并没有,以及想起种种的对比和刺激,当时情绪消极和失落。所以后面的百度是消极笔试,但是又运气好过了,面着面着不知不觉到了二面,就开始患得患失,最后面完百度,在广州区里的互联网公司例如多玩,都是抱着和同学去的态度,那段时间竟然心态调整不太好,从一个极端又走到另一个极端。

直到面了蘑菇街,又更加明白自己技术栈非常不足,在这几天看到一个清华研究生的面经,才知道自己最肉的技术点,只是别人的起步,看到他拿的都是 sp ,自己都是批发价,当然面经下面的评论才是更精彩, FLAG 大神,人外有人,当看完那篇面经,虽然之前已经是被打击,被虐心了很多次,但是那个冲击,那个打击依然是很大。有位老师说,“很多人会遇到自己的天花板,天花板是早晚遇到”,百度三面总监问我, 2 年内, 你有没有信心挖完 android ,我当时说有,其实是没底,看完那篇面经,更没底,那我怎么调整,我会如何面对我以后的天花板?所以就补充完这份面经。因为我大一大二一开始并不是很喜欢编程,甚至我一开始就感觉大学就是用来玩,真正的兴趣驱动和我这种有点变了质的驱动感觉会有不同,很有可能以后的天花板也不同。 对于想交流各方向技术或者关于发展的,也请多点联系聚聚,最后祝各位成为大牛!


技术交流 Q 群: 275943576

 

YK

2015 10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

附一:半年啃过的 书单 (都是以成长曲线最高,学习成本最小来挑选,付出的代价就是书的价格,这些书并不便宜,绿色为推荐,但个人没看,还有很多非常好的书,请务必联系我),另外个人笔记整理后会再发:

Java 基础:

深入理解 java 虚拟机 周志明

Java 编程思想

Effective java

Core java

Java 网络编程 —Elliotte Rusty Harold

Java 并发编程实战

 

CS 基础:

TCP/IP 协议簇

图解 Http

TCP/IP 详解卷卷一

深入理解计算机操作系统

鸟哥的 LINUX 私房菜基础篇

C Primer Plus

C++ Primer

C 语言程序设计语言

C 专家编程

C 与指针

C++ 程序设计语言

Effective C++ :改善程序与设计的 55 个具体做法

深度探索 C++ 对象模型

C++ 标准库(第 2 版)

虎书(前 2 章,可以应付学院内编译原理考试)、龙书、鲸书

 

 

算法和数据结构:

算法 -Robert Sedgewick

剑指 offer

编程之美

Cracking the coding interview

程序员代码面试指南 左程云

Leetcode 这个是 OJ ,刷了 10 题后来没刷

算法导论(数学水平太差看不懂)

 

 

 

Android

第一行代码 Android ( 入门 )

Android Pro 4

Android 开发艺术探索 任玉刚

Android 群英传 徐宜生

深入理解 Android 卷一 邓凡平 ( 看到 binder 机制前 )

深入理解 Android 内核设计思想 林学森(看到 binder 机制前)

大话移动 APP 测试, Android 应用测试指南 陈晔

Android 内核情景剖析 罗升阳

Android 安全技术揭秘和防范 周圣韬

Android 应用性能优化 --Herve Guigot

 

设计模式:

Head first 设计模式

模式 - 工厂化实现及扩展 王翔

 

 

建议:学习语言之后,就用他实现一个网络爬虫或者用来刷一下题,对语言基础会有很深的理解,例如 Python Java

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

附二:个人整理的 面试提纲 (实际上理论基础面试和代码面试,是并没有提纲可的,但是这些是我爬过很多面经,当时的一套知识点用来逐一突破,现在又补充了新的内容上去)

J2SE

1 、集合 (这个部分的内容是频率高的内容,个人觉得是因为结合了数据结构,还可以结合并发安全考。其实要通关这部分,最好就是把 JDK 标准类的源码实现一次,据说今年成都腾讯面,一位面试者写源码 hashmap ,顺利录取):

ArrayList LinkedList Vector 的底层实现和区别

HashMap HashTable 的底层实现和区别,两者和 ConcurrentHashMap 的区别。

HashMap hashcode 的作用?什么时候需要重写?如何解决哈希冲突?查找的时候流程是如何?

Arraylist HashMap 如何扩容?负载因子有什么作用?如何保证读写进程安全?

TreeMap HashMap LinkedHashMap 的底层实现区别。

Collection 包结构的组成, Map Set 等内部接口的特点与用法。

 

2 、并发 Executor 框架和多线程基础):

Thread Runable 如何实现多线程

线程同步的方法有什么;锁, synchronized 块,信号量等

锁的等级:方法锁、对象锁、类锁

生产者消费者模式的几种实现,阻塞队列实现, sync 关键字实现, lock 实现等

ThreadLocal 的设计理念与作用, ThreadPool 用法与优势(这里在 Android SDK 原生的 AsyncTask 底层也有使用)

线程池的底层实现和工作原理(建议写一个雏形简版源码实现)

几个重要的线程 api interrupt wait sleep stop 等等

 

3 IO IO,NIO ,目前 okio 已经被集成 Android 包)

IO 框架主要用到什么设计模式

NIO 包有哪些结构?分别起到的作用?

NIO 针对什么情景会比 IO 有更好的优化?

OKIO 底层实现

 

4 、其他的 java 语言特性

反射机制

String 类内部实现,能否改变 String 对象内容,比较经典的 String 字面量笔试题

Object 有哪些公用方法?

try catch  块, try 里有 return finally 也有 return ,如何执行这类型的笔试题

Exception Error 的区别

泛型的优缺点

另外就是关注最新版本 jdk 的新特性,例如 Lambda 表达式

 

5 JVM

自动内存管理机制, GC 算法,运行时数据区结构,可达性分析工作原理,如何分配对象内存

类加载机制,反射机制,双亲委派机制,类加载器的种类

Jvm 内存模型,先行发生原则, violate 关键字作用

 

 

CS 基础:

1 OS

进程和线程

死锁的必要条件,怎么处理死锁。

段存储,页存储,段页存储的区别。

进程的几种状态和转换

Android 下的 IPC 几种通信方式

逻辑地址、物理地址的区别

进程调度算法

 

2 、网络基础(主要是 TCP HTTP

OSI TCP/IP 各层的结构与功能,协议和作用。

TCP UDP 的区别。

TCP 报文结构。

TCP 的三次握手与四次挥手过程,各个状态名称与含义, TIMEWAIT 的作用。 TCP 的三次握手过程?为什么会采用三次握手,若采用二次握手可以吗?

TCP 拥塞控制。

TCP 滑动窗口与回退 N 针协议。

Http 的报文结构。

Http 的常见状态码含义。

Http request 的几种类型

Http1.1 Http1.0 的区别

Http 怎么处理长连接。

Cookie Session 的作用于原理

访问 www.xxx.com ,描述一下这个过程发生什么

socket 通信的几个关键函数

IP 地址分类

路由器与交换机区别

了解交换机、路由器、网关的概念,并知道各自的用途

 

 

 

数据结构和算法:

剑指 offer

编程之美

Cracking

程序员代码面试指南

特别是这四本书上的重复题

 

 

Android

1 UI 层面 (对 UI 不擅长):

FrameLayout LinearLayout AbsoluteLayout RelativeLayout TableLayout

View 树绘制流程

下拉刷新实现原理

三种动画的区别

 

2 、基础和底层

四大组件相关:

Fragment 的生命周期和 activity 如何的一个关系

Acitivty LaunchMode 与特点

Service 的两种启动方法,有什么区别

目前能否保证 service 不被杀死

广播的两种动态注册和静态注册有什么区别。

Intent 的使用方法,可以传递哪些数据类型。

ContentProvider 使用方法

机制:

Handler 机制

AsyncTask 相关问题, 3.0 前后的 bug ,如何实现并发?底层实现原理?

Android 的三级缓存如何实现

Binder IPC 机制, aidl

触摸事件分发机制

Activity 启动流程以及界面展示过程

Android 系统启动流程

Android 中的 MVC MVP MVVM

涉及动态加载技术点相关

 

3 、开源框架 (回想学习开源的经历,建议先用开源组一个 app 出来,先做一个开源的搬运工,再深入理解)

例如: ButterKnife + Okio + OkHttp + Volley + Gson fastjson + glide Picasso fresco + android-common eventbus + dbflow greenDAO + LeakCanary 。一整套的 View 注解、网络请求、图片加载、工具类、数据存储、性能检测等等的基础框架。 UI 方面, Support Lib + Design Lib + 各种开源 View 控件。再关注某些著名开发者的框架,然后选取学习。

需要掌握的程度:

1、 框架功能和作用

2、  工作流程图

3、 总体设计和原理

4、 底层实现细节或 Uml 类图


同样建议造轮子

#腾讯##百度##网易##安卓工程师#
全部评论
楼主很不容易, 在牛客编程题通过100以上,   以前在其他QQ群里和别人认真讨论题目被人说装逼,牛客群里终于找到同道,走自己的路现在终于收获满满。
点赞 回复 分享
发布于 2015-10-16 23:14
真心为你点赞,再次证明了人不逼自己一次不知道自己有多大的能耐,也恭喜你拿到了好offer!
点赞 回复 分享
发布于 2015-10-16 23:57
楼主果然有实力啊,不知楼主来自什么学校啊?》
点赞 回复 分享
发布于 2015-10-16 23:47
厉害啊。清华研究生的那篇面经给个链接吗?
点赞 回复 分享
发布于 2016-03-02 09:39
2015年秋招?
点赞 回复 分享
发布于 2016-03-22 10:44
赞,非常赞
点赞 回复 分享
发布于 2015-10-16 23:09
这是谁,我不知道。。。。。
点赞 回复 分享
发布于 2015-10-16 23:11
支持了,希望自己也能快点找到工作。
点赞 回复 分享
发布于 2015-10-16 23:12
满满的都是正能量,努力看书+学习+实践
点赞 回复 分享
发布于 2015-10-16 23:19
6
点赞 回复 分享
发布于 2015-10-16 23:33
左老师的课,欢迎大家来学 http://www.nowcoder.com/courses/1
点赞 回复 分享
发布于 2015-10-16 23:36
前排仰慕楼主~~~
点赞 回复 分享
发布于 2015-10-16 23:44
楼主厉害
点赞 回复 分享
发布于 2015-10-17 00:34
作为同班同学加好友,希望自己也可以像他一样找到自己理想的工作。
点赞 回复 分享
发布于 2015-10-18 12:38
看到楼主总结的资料,感觉自己被虐了,满满的都是泪
点赞 回复 分享
发布于 2015-10-19 09:58
YK,您好~ 看到您的回答“2016秋招面经(蘑菇街+BT+网易杭研+CVTE+唯品会)”,非常精彩!希望能转载到我们的微信公众平台,会注明来源和原作者的。 我们的平台是做校园和职场的连接线,我们有求职路上必备的干货以及来自企业前辈的优质在线讲座,目前粉丝有五万多哦,微信号imlizhi,您可以看一看。我们是有情怀的公众平台哦。 嘿嘿,希望收到您的回复。
点赞 回复 分享
发布于 2015-10-21 15:12
楼主厉害,学习楼主经验
点赞 回复 分享
发布于 2016-01-15 15:41
望楼主介绍学习路线
点赞 回复 分享
发布于 2016-02-20 13:36
谢谢!
点赞 回复 分享
发布于 2016-02-22 16:04
很厉害!
点赞 回复 分享
发布于 2016-02-25 20:30

相关推荐

12-06 12:24
已编辑
北京师范大学 数据分析师
流浪的神仙:学历够了,项目可以再完善完善,kaggle去打打比赛吧,有牌子最好,没有也没事,完整的参加一个然后写到项目上去
点赞 评论 收藏
分享
评论
点赞
358
分享
牛客网
牛客企业服务