记录下秋招的一些公司的面试

记录下秋招的一些公司的面试_第1张图片
龙珠超.jpg

前言

首先,自我介绍一下,我来自广东某工业大学的大四学生,本科专业是通信工程。大二开始自学Android相关,断断续续地看书,做项目,直到真正找公司发现始终还是一个渣渣。
后面自从今年(2017)8月中旬在实习的公司离职之后,一直在忙复习基础,找工作,所以很多事情都搁置了。后面发现好久没写过文章了,并在秋招中有一些个人的感受,因此想记录下秋招的一些有趣的公司的面试,大神们请轻喷哈。

阿里笔试批

以下都是阿里系统的视频面试

一面北京优酷

1.onStart和onResume区别

2.activity, view,window区别

3.点击按钮的事件传递过程,view的事件分发

4.view的绘制过程

5.handler机制

6.项目
先介绍项目,负责哪块,难点,解决方式
以下是面试官提及到的一些问题

  • 框架源码
    网络库比较,Glide和UIL区别,优势缺点等等
  • 空指针,oom(MAT原理),anr(trace文件查看原因),出现的原因以及如何处理
  • 屏幕适配(同一个apk,一套720*1280图片,如何适配多台手机)

7.情景

  • 视频平缓屏幕放大变横屏功能如何实现
  • 团队开发等等,只选择杭州吗,项目角色,对团队的向往
二面北京支付宝

讲项目
1.设计今日头条首页有图片又有视频的列表

2.设计手机通信录,如何通过输入名字快速查找到号码

3.一个非常简单的问题作为结束:数组链表区别

hr面

阿里的hr可是懂技术的,问的问题相对多,比如手机淘宝,手机京东的技术上有什么区别等等,大概40+分钟。

这是再加上我春招找实习阿里的面试经历

首先谢谢助班还有助班的朋友,帮我内推了手机淘宝技术部,其中还提了很多宝贵的建议。如果下次还有阿里的内推,我建议大家还是早点内推,越早内推简历基本不刷,后面就开始刷简历了。
在网上完成的测评之后还有一道编程题之后(目测还是动态规划)一个星期之后接到一面电话:

一面(57分钟)

1.项目源码(Eventbus),数据结构(数组链表区别)

算法(快排怎么实现,两个字符串最长的公共子序列(动态规划)
2.Java基础(抽象类和接口区别,static类,sychronized,==和equal区别,try,catch,finally)

3.JVM(内存泄漏,类加载,双亲委派模型)

4.安卓的(activity的生命周期,自定义view,

view事件分发,handler机制,内存泄露,apk的生成原理和过程)

5.网络(http如何请问和返回数据,从请求到解释等等)

以上基本90%能答上来,其间我还提及到了C++方面和Java对比的(析构函数,多继承等等)所以很愉快地过了一面,问的问题比较广,基本把我学的都问了个遍,后面提问环节才知道他就是内推我的那个人。 真的很幸运,后面邮件他也提了一些建议,“小伙子要稳重谦逊点等等,哪个方面要加强等等”。真的谢谢他!

刚好又过了一周接到了2面电话,是一个非常有经验的面试官。

二面(56分钟)

1.项目(listview和recyclerview区别、说到listview没有itemType的时候,面试官说真的没有嘛?其实我已经说错了。所以面试出了一题如何实现listview的itemType、
不同item布局如何避免擦除tag(面试官提醒有没其他setTag的重写方法,我说用sp保存tag,面试官还算满意)、OkHttp源码(请求方法、请求报文和响应报文的结构。状态码300-400-500,keep-alive哪个http版本引入(我答了1.0,很模糊。其实是版本1.1),所以面试官叫我解释一下长连接)
图片缓存库(由于我说到源码的弱引用的时候所以面试问了我虚引用场景)、支付sdk 、Activity的启动模式,任务栈的管理(面试官一直引导我由哪个管理的,估计面试官想我答AMS,ActivityTask相关的,没答出来)
listview的tag问题:
http://blog.csdn.net/zhuangxiaozhi/article/details/66551453

2.handler机制、内存泄漏(对象的创建,生命周期的长短关系)、threadocal源码(由于我忘记了,所以面试官又问叫我如何实现一个threadlocal场景)、于是我说了互斥锁的场景,后面发现自己已经挖坑了,所以面试官接着问锁的类型区别(对象锁和类锁)、可重入锁,死锁怎么产生,如何避免死锁(银行家算法)

3.进程线程区别、进程的通信方式、Binder的区别和操作系统的进程间通信方式优势

4.垃圾回收机制、判断对象可回收的算法以及源码理解(又是问源码,JVM哪里来的源码看呢?)

这次真的是问得好深,很多问题都是刨根问底,感觉准备得还是不够充足,还有答错的,基本60%能打出来。

后面过了一个月之后,内推的人查到挂第二面了,已经没有技术面了,一次很接近hr的机会就丢失了。

阿里的面试官真的挺有水平的。

总结就是有时候面试官不一定要你回答问题,而是看你的思考方式,还有自己了解的深度。还有遇到不懂要自信点,并且学会转移话题。

腾讯笔试批

一面mig手机管家

1.手写快速,c语言版本实现,快排的优化,时间复杂度,nlogn的其他排序以及对比
2.项目,当时项目总结得不是很好,自己进了一个大坑。所以建议自己的项目一定要总结好。Lv和Rv区别
3.提问

二面

计算机组成原理,gg。

这是再加上我春招找实习腾讯的面试经历

内推一面(17分钟)

师兄的内推,真的很感谢他。 据说腾讯的内推是刷简历的,当时觉得就没多大机会,很多事情想想都是猝不及防的。嗯,腾讯其实才是我最早应该面试的公司,但是和舍友投了久邦数码之后,不知为什么有两个来自深圳的未知电话(上面写着腾讯公司),后来打回去是客机,之后一个星期都没打来了(已经打算放弃了)。有一天晚上做完笔试,不知为何又有深圳的电话打来,一想便知是腾讯的。后来面试完,查找通话记录发现,后面的一周内面试官原来打了我不少于10次的电话。

是个女面试官,感觉是简历面,(好像是拿着题库来问我)

1.项目负责哪一部分,性能上有什么优化?

2.图片的缓存,ANR ,内存泄漏

3.自定义View

4.四大组件的生命周期

5.数据的持久化保存方式

基本能答出来,后面还是没过。(应该内推的要求还是比较高吧)

正式招聘

笔试(4.2)

在线上完成的笔试,题目还是比较难的,涉及到c/c++的比较多,网络,操作系统,数据库,还有两三道Android,还有一题OC的。问答题是腾讯产品快报Fragment的功能设置,面向对象的三大特性,编程是有关单词的(没做出来),变形的二分查找。做完就很绝望啊,没想到某天晚上收到面试通知。

一面(4.12)

其实我也很绝望,当天下午EDA考试,还有两天的感冒在宿舍睡了两天。模模糊糊地看了下书啥都不想做,提前交了卷后,打开手机发现工作人员打了我8次电话,就急冲冲地赶到了酒店,下着雨,从地铁站坐了个滴滴到了酒店,已经5点多了,看起来还是好多人哇。(貌似挺多人来霸面的)
后面hr问谁在5点30分前预约面试还是没接到面试的上前面,后来我就解释了一下因为考试的原因,后面就在前排等着,后来收到微信的推送和短信通知,就进了某个房间开始了面试。
面试官先叫我做了个自我介绍,之后看着我简历写了熟悉Java,就问了比较多有关Java的。

Java:1.线程安全,锁的实现,以及各种线程同步方法的区别。四大引用,重载重写区别(我还涉及到JVM的动态分派和静态分派),hashmap源码(jdk1.8为什么要加入红黑树)和hashtable区别,stringBuilder,stringBuffer 区别

项目和Android:2.项目负责哪一块,图片缓存策略,广播的注册方式,动态注册在activity哪个方法注册,好处。数据的持久化存储方式(第二次问了)

3.手写单例模式(写多了一个同步锁,面试官发现了),随机存储0-99这些数到int[100]数组中,不能重复(写得不全,一直在想优化算法的问题,一开始还存在数组越界的问题,又被面试官发现了)

后面就是惯例问问题,我的问题问得比较傻,也可能是被刷的原因之一,所以建议各位同学事先好好准备几个问题。
后面问了面试官的建议以及评价
面试官最后的回答是:基础还算比较扎实,但是语言的表达(先理清思路再回答),腾讯这么大的公司算法也是要过关的。可能没给面试官留给心思缜密的印象,当晚面试从6点多面到7点多,当时大家还没吃饭,我是最后一个面试的。面完一个傻傻的站在酒店楼下发呆了一下。当时回到学校查了下微信显示“当前职位可能不适合您”。最终和腾讯就这样失之交臂。

富途证券

这是一家由腾讯控股的公司,感觉挺不错的。

一面,评价A

1.实习做的项目介绍各个技术点(要有自己亮点)

如界面卡顿(列表缓存优化), EventBus注意点
(混淆代码后注册方法被混淆了咋办,3.0加入APT注解工具)等等

2.Android:oom,内存泄露,http请求方法,get,post区别

  1. Java相关:

抽象类和接口区别(忘记已经多少次问了)

死锁,n个线程n个资源n个Lock,如何避免死锁

4.一个6升和5升的水壶,没刻度,如何得到3升水

5.交换变量,不能用中间变量,解决的原理

面试官人很好,交流的时候有提示

二面跟腾讯的套路很类似,评价B*+

1.上来就把做对做错的题问一下,还有笔试的sql语句不会写,继续写,还是错

2.变形二分查找(本人笔试字体丑),继续写

3.马铃薯,买和卖各一天,100天,求最大利益

其实就是股票的买卖最大利益

4.100瓶药水,有且只有一瓶毒药水,老鼠喝了7天才有反应。问至少多少只老鼠才能找出那瓶毒药水

CVTE提前批

一面

都是面完一个面完上一个。没有顺序,两个面试官,看样子都是搞Android的

1.我项目中的一个写到了推送的TCP心跳包,就细问了一下原理(如何保证后台进程不被kill等等)

2.线程启动的方法(三个)

3.软引用、弱引用区别,见我回答得比较快又爽,就问了下虚引用的引用场景等等

4.Activity的四种启动模式

5.Handler机制

6.HashMap源码

7.MVP,MVC,MVVM区别,用图画出来

8.Java垃圾回收 --babalala

9.泛型

10.锁(sychronized/look&&reentrantlock)

11.手写算法:找出字符串第一个只出现一次的字符,秒了。讲了下思路

12.讲下RxJava的flatMap的原理

13.面试官说没什么问了,就多问一下多线程的知识--如何结束线程(当时忘了就讲了一个不常用的stop)

14.怎么学习Android,有没写博客(多少篇),有没开源(多少个star)

15.有没学习新的语言,原来面试官是想知道有没学Kotlin

可能有些是忘记了,但是基本按照自己知道的全部都说了,然后面试官叫我到那边坐着等一下先,所以知道一面是过了

二面

等了一会,很快就有人叫我上去二面了。面试官是一个年轻的小伙子

1.首先他一上来就问了一个算法,据说是经常经常问的一个:1 11 111 1111 。。。2017个1,求输出

我没问输入是什么,然后他就问我输入你都不知道是什么就开始写了,整个过程一直被压着。他说n是2017,然后我就开始写了,5分钟没写完。然后他问我写完没,再给了2分钟。后面基本讲了下思路吧。那时候感觉就不好了,有种压力面的感觉。

2.后来他说这个先这样吧,说先问问网络吧,HTTP是哪层协议(应用层),说到了基于TCP,然后他问了我如何UDP模仿TCP安全传输,然后我就说了下ack序列号滑动窗口等等。有些可能是跑偏了,然后他又说我跑偏了,那时候真的想直接回去了GG。这个问题上扯了好长时间,好像没令他满意。就问了一下数据怎么安全性,我说了加密,还有ca证书等等。这个时候已经感觉自己跪了。

3.说到了内存溢出,图片的JPG和PNG区别,还有5.0加入的SVG,图片大小如何计算,图片如何压缩,算法

4.然后就问我看过了什么源代码,我说了一下设计模式相关的看得多(他们比较喜欢问设计模式),然后说到了属性动画原理是反射,然后就问反射的缺点(忘了),再说到了代理模式,就问了下静态代理和动态代理区别。我也忘了。

5.问我如果接到一个项目,你会从哪个方面考虑,从代码方面讲述,还有性能方面等等,后面他又说我跑题了。我整个人都不好了。

6.最后他说他了解得差不多了。问了一下对自己的表现评价,我说我秋招再来吧,面的不好。然后就问了下公司的情况知道吗,有没有觉得刚才你觉得你优势的地方我没有问出来的等等。

7.知道自己跪了,就礼貌地跟他握了个手,他笑了一下,他说他也是我们学校毕业的。

终面

因为面得不好,所以问HR是否能回去了,没想到HR跟我说还有一面,心里想,这也能过。后面就是两个HR对三个人

1.家庭成员

2.职业规划

3.以后想工作的城市

4.想加入的公司

5.对自己影响最大的一个人

6.理想薪酬

7.学习成绩

8.压力最大的时间

9.对提前批的看法

10.有无其他公司offer

11.什么行为是自己不能接受的

12.对加班的看法

13.父母对自己的期待

美团深圳一面,霸面挂

1.Java:

HashMap的底层和HashMap的hash算法

volatile的含义,使用场景,线程yield的作用

2.垃圾回收机制,有多少能说多少

3.网络,OkHttp底层源码,请求队列具体到是一种怎么的队列,画一下请求包结构,请求头有哪些常用字段,如何加快网络的加载速度,从客户端,服务器方面,代码优化方面等

4.Android:

内存泄漏场景,Handler机制,循环消息是执行在哪里的线程?如果没有消息,它是一种怎么样的情景

ListView可以优化的地方

apk瘦身

如何让app启动加快,(冷启动),

插件化原理,hook原理

点击图标Launcher进程启动另外一个进程的过程,binder相关的,比如client是如何向servermanager注册binder的,能说多少就说多少。

activity的启动模式和引用场景

Android如何保持service不给skill掉?有哪几种进程?优先级从高到低。

加载图片列表的优化,oom问题如何避免,bitmap相关等

viewstub作用

RxJava使用的优势

MVC,MVP,MVVM画图解释区别优劣势

5.假设有一个最大线程数是5的线程池,当加入6个任务的时候,你是如何设计解决这样一种场景

6.手写判断链表有环

至此,当时找到还算不错的工作就不想再折腾了,所以美团毫不犹豫地挂了。但是美团的面试体验是非常友好的,为hr和面试官点赞。
至于我去哪里,就保密吧哈哈。

手写算法常见

1.链表:插入,删除,反转,判断单链表是否有环

2.排序:快排,归并,堆排,比如第k大的数

3.实现一些常见的数据结构,比如栈等

4.字符串的处理,特别是第一次只出现一次等情况的字符查找。

秋招的一些体会

上面只是记录了一些觉得参考价值较大的面试,就可以体现出Android开发在校招的一些要求。可以得出以下一些个人的总结:

1.数据结构和算法基础,特别是大公司的笔试或者面试都可以体现出来
网络:TCP/HTTP,设计模式,Java基础,Android基础都是需要非常扎实的。

2.项目,一定需要有自己的深度和亮点。至于实习经历那块,最好是有大厂的实习经历,这样可以通过很多公司的简历筛选。

3.再说说一些软实力,比如语言的表达能力,后面多参加几个公司的面试就培养起来了,一开始我也不是特别好,后面面多了就成精了。

4.心态,不要因为一次的失败而气馁,也不要因为一次的成功而骄傲。面试存在着一定的运气成分,找工作是双选选择。

5.最后,Android的需求确实趋于稳定了,对于Android开发人员的要求越来越高,很多需要透过源码的本质去分析,所以平时更需要严格地要求自己。

以下是个人看过的一些书籍

1.有关C/C++:

  • C primer第五版:http://product.dangdang.com/8976834.html

  • C程序设计语言第二版(至今都未更新,大神出的书):

http://product.dangdang.com/8766529.html

  • C++primer第四版:

http://product.dangdang.com/9157098.html

  1. 数据结构和算法
  • 数据结构和算法分析(C语言描述)
    http://product.dangdang.com/8767364.html

(个人认为最好能表达出数据结构的精华就只有C/C++)

  • 算法(第4版)【Sedgewick之巨著,与高德纳TAOCP一脉相承】:

http://product.dangdang.com/22880871.html

  1. 有关Java和虚拟机:
  • Java编程思想(第4版)

http://product.dangdang.com/9317290.html

(后来看不下去了,太多,代码和字太密)

  • Effective Java中文版(第2版):

http://product.dangdang.com/20459091.html

(很多人都说它是本好书,你觉得呢)

  • Java并发编程实战

http://product.dangdang.com/22606835.html

  • Java核心技术 卷1 基础知识(原书第9版)

(师兄送了卷1和卷2,我只看了卷1->>>英文版,推荐)

  • 深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)

http://product.dangdang.com/23259731.html

  1. 有关安卓:

第一行代码第一版(去年12月出的第二版),Android编程入门经典(高级编程还没看),Android开发艺术探索,Android 源码设计模式解析与实战 。

  1. 有关操作系统:操作系统精髓与设计原理

http://product.dangdang.com/20919066.html
其实更推荐深入理解操作系统那本书。

最后的,有需要Android面经总结的,可以在下面留个邮箱,看到的一定会回复。

你可能感兴趣的:(记录下秋招的一些公司的面试)