2019我的秋招

秋招正式结束,最后感谢百度给予的认可,真的有种受宠若惊。简单回顾一下秋招。也给出自己的面经,文章最后列出两个自己看的资料。

  • 3月:
    挤出时间去找了几家实习,在毫无准备的情况下,因为知道不能出去实习,正是这几次被按在地上摩擦的面试经历,让自己清晰的认识到找工作需要好多好多东西。
  • 9月:
    正式开始秋招,这期间每天都在焦虑中度过,尤其在字节二面挂收到感谢信,小米二面完未收到恭喜涵,特别是贝壳一轮游之后自己深深的陷入的自我怀疑,每天味觉不振,每晚都会醒好几次,人也变得更加消瘦。但是还得继续,不想面临一毕业就失业的尴尬局面,9月前半段疯狂笔试,中下旬疯狂面试,还记得打破记录的是一天面了5家,面完人都坐不住了,每天在外面,面试前的紧张,面完赶下一场的疲于奔命,有的时候真的感觉好无助,特别是19号那天中午在餐馆里吃了午餐,趴在那睡得那一会,真的想给我个offer,让我结束秋招吧。
  • 转机:
    9月20日凌晨,像平常一样,凌晨两点左右醒来,发现邮箱里收到了vivo的录用函,那一刻真的很感动,很晚很晚了,激动得好久才睡着,白天下午就去了签约沟通会,还送了一个大礼包,真的很感谢。在那之后又收到了欢聚时代的口头offer,以及oppo的offer,就这样慢慢的好起来,心情和状态慢慢好转,到最后面试百度时,真的很放松。
  • 总结一下面试的公司:
    vivo 欢聚时代 oppo 海康威视 百度 华为 收到offer,美团 小米 4399等消息,科大讯飞收到offer意向书怎么又通知无法进入下一阶段, 贝壳一面挂,字节二面挂,阿里一面挂,招银电话面挂,CVTE二面挂,快手、京东笔试不过,滴滴、爱奇艺、小红书、网易、老虎集团、酷狗、招银信用卡中心笔试之后无消息,猿辅导、keep面试没去,很抱歉。
  • 最后:
    真心感谢这个过程中出现的每一个面试官,这个过程虽然很痛苦,但是对自己的积累真的很重要,后面面试中出现了很多内容都得到了前面面试官的点拨,非常感谢。也感谢那个疲于奔命的自己,即使面试冲突了,哪怕时间错过了,我也会毫不犹豫的赶过去,也感谢这些公司给了面试机会,特别是vivo和百度。

总结:关于秋招总结几点,

  • 1 心态,被拒绝是难免的,一定要调整好心态,同时面试时适度紧张,想开点,心态是最重要的。
  • 2 基础,每个学科的基础性知识要掌握好,秋招的过程是一个查漏补缺的过程,做好每一面问题的记录,后来恶补。
  • 3 简历,简历上写的东西一定要好好理解透,如果被面试官发现你是真的只是会用,那会很被动,也不用理解很透,只需要了解个大概,核心概念要知道。
  • 4 项目,简历上的项目要烂熟于心,最好介绍前要介绍一下应用背景。
  • 5 技巧,从自我介绍开始,就要学会介绍自己擅长的,在回答问题的时候也要学会将面试官引导到自己会的领域。
  • 6 关于手撕代码,其实现场手撕题目一般不会太复杂,多为链表、数组排序、查找、二叉树、字符串操作、海量数据操作等,面试官主要考察你的思路、代码风格等。最好掌握递归、动态规划等思想。如果写不出来,也就没有必要一直耗着,有思路说一下也行。

[toc]

实习

3月19日阿里电话一面

  1. 强引用和弱引用
  2. HashMap实现。
  3. ArrayList和LinkList的区别;
  4. 红黑树;
  5. 设计模式;
  6. View的绘制;

体会:

  • 说话要有条理,要会组织。
  • 基础知识要扎实。
  • 要学会看源码,专注某一个方面的技术,懂得透彻才行!

3月26日腾讯电话一面

  1. 异常,多线程,反射,什么地方使用,解决了什么问题!
  2. 泛型,和c++模版的区别,泛型擦除。
  3. activity和service的区别。
  4. activity,fragment,view的区别,什么时候只能用activity,什么时候只能用fregment。
  5. 进程保活,为什么程序会死掉。
  6. svn和git的区别。

体会:

  • 想问题不能太久,不一定要一个具体的答案,重在分析!
  • 基础,基础,基础,平时积累!

4月17日华为面试

  1. StringBuilder和StringBuffer的区别,分别怎么扩容
  2. 画项目的一个结构
  3. 项目功能分块
  4. 广播分类,分类方式等,有序无序,如何让一个APP接收另一个APP指定的广播。
  5. 六种设计原则,用过哪些
  6. 23种设计模式,用了那些
  7. hashmap实现原理
  8. 活动的四种启动模式,淘宝页面的方案
  9. startservice和bindservice的区别
  10. 项目中是否使用异步,并发。
  11. framework结构,画出来(懵逼)[你结构都不知道,写出来的东西只是能用,华为是做手机的,不是做Android的,继续懵逼]
  12. 如何报心跳
    13.内存泄漏,遇到的,如何处理的。

优酷(时间不记得了)

  1. RecyclerView 缓存机制,缓存多少个,为什么使用RecyclerView
  2. 微信小程序是如何运行起来的。
  3. Gradle如何分模块编译。

秋招

8月30日 平安科技

  1. JVM分那几个部分
  2. 堆内寸和栈内存的区别
  3. 有哪些异常,怎么处理。
  4. 有哪些树结构,应用场景
  5. 数据库索引

9月2日 字节一面

  1. Android 4大组件(英文),及其作用。
  2. 活动的启动模式和相应活动栈的变化
  3. 自定义view,界面是如何绘制到手机屏幕上的。
  4. HashMap HashTable ConcurrentHashMap的区别。
  5. HashMap中如何获得key的hash值,hashmap的负载因子是否可以改变。
  6. 时间复杂度和空间复杂度分析。
  7. 手撕字符串反转(摆手算法)

9月5日 字节二面(凉面)

  1. HTTP状态码(1,2,3……开头的分别代表什么意思,206了解吗)
  2. HTTPS和HTTP的区别,秘钥是如何交换的;
  3. 活动的四种启动模式,及其应用场景,问了singleTop的应用场景,没回答好(投的android岗,二面唯一的android问题)
  4. get和post的区别,如果参数只是字符串,可以用get代替post吗,我说不能,get参数长度受限,面试官:具体限制多少,(不知道)
    4. Java的异常;(我居然答出除0是不可try的,笨死了)
  5. 浏览器输入网址,经历了什么。
  6. DNS解析了解吗(只知道DNS解析是通过域名得到ip);
  7. HashMap和HashTable的区别,平时项目都使用的谁?(以为不会再问计算机网络了,结果……)
  8. TCP和UDP的区别;
  9. 3次握手和4次挥手。
  10. 手撕单链表添加,删除,反转(比较easy,最后面试官问会不会断链);

9月2日 小米一面

  1. JVM 内存模型,简单点的堆栈理解
  2. java四种引用在GC的表现
  3. final finally finalize 区别
  4. Http get post
  5. Android 消息机制,线程是如何确保其Looper只有一个的。
  6. ThreadLocal
  7. view绘制,3个函数
  8. Android 事件分发机制,三个函数,以及其中的调用关系。

9月4日 小米二面

  1. 手写字符串转数字(逐位解析,判断溢出);
  2. Activity的生命周期函数和表现。
  3. 自定义view相关,其layout_width等属性如何影响其呈现。
  4. bindService和startServie的区别和各自的应用场景。
  5. HashMap和HashSet的实现。
  6. volatile关键字的作用(讲到了java内存模型,面试官问我怎么了解到java内存模型的,我很诚实的说准备面试^~^);使用 volatile 可以禁止 JVM 的指令重排,保证在多线程环境下也能正常运行。
  7. java代码在JVM上会乱序,为何(不会)->指令重排列
  8. 几个线程池的线性个数设置,以及其如何管理生命周期;
  9. 装箱和拆箱如何实现->valueOf 和 xxxValue(xxx为相应包装类型对应的基本数据类型,比如int)
  10. 泛型如何实现;
  11. 项目难点、如何解决。

9月2日 阿里一面

  1. 内存泄露 Android 层面,Java层面的原因。
  2. 项目中的Thread如何管理,有没有封装相应的工具内。
  3. ArrayList HashMap的区别。
  4. 栈和队列的区别,分别用数组和链表实现队列,比较区别。
  5. 有A、B两个二叉树,判断A树是否是B树的一个子树。
  6. 如何实现双向循环链表,Android中双向循环链表的使用。
  7. 有哪些排序,选择一个排序,介绍他的实现思想,如何分析排序效率(我答了时间复杂度和空间复杂度,继续追问,用空间换取时间,给了一个场景,如果用户的手机内存比较小512,如果用空间太多,会有什么影响)。
  8. TCP和UDP的区别,QQ聊天,视频,游戏,那个对可靠性需求高,那些用了TCP。
  9. Android中两种广播 静态广播和动态广播,有什么区别?(明明经常用,也知道,当时居然脑袋怎么突然就想不起来了——常驻和非常驻的区别)。
  10. Android用到那些布局,(答了经常用的线性和相对,继续追问,那种会效率高点……)
  11. Thread AsyncTask IntenService 有什么区别。
  12. 是否用过Android的Sqlite,(学习用过,就没追问,估计知道我不会)
  13. Android xml布局三种复用的方式 include,merge,ViewStub的区别(我只知道前两种,也没用实际用过,没答上来)。

9月10日 招银电话一面

  1. 类加载,在什么时候加载一个类
  2. 类的初始化
  3. ThreadLocal
  4. Android中的进程通信
  5. 消息机制,为什么一个线程要有一个looper,不能共享吗
  6. Service运行在单独的进程还是UI进程
  7. webview,混合开发
  8. IntentService
  9. Binder参数限制

9月11日 贝壳一面(凉面)

  1. px sp dp 的区别
  2. java内存模型,volatile关键字
  3. long double int 安全性(大意是多线程操作那个类型的变量是安全的),long double是如何存储的。
  4. 数据库索引,B+树叶子节点存储的信息
  5. 聚集索引和非聚集索引
  6. 海量数据排序。
  7. 指令重排列问题。
  8. 垃圾回收算法。
  9. 可回收分析,new一个对象是否可回收。

9月16日 海康威视一面

  1. 活动生命周期,活动的启动模式。
  2. 服务的启动方式,多次startService如果stop问题。
  3. 四大组件
  4. 为何不能在子线程中更新UI问题。
  5. 项目。
  6. 说一个你关注的公众号中的一篇文章。
    (剩下一些记不清了,总体较为基础)

9月17日 华为一面

  1. 项目
  2. 活动的四种启动模式。
  3. C++ 申请内存的方式,如何释放内存(我只答了析构函数,面试官还提示了delete)
  4. 四大组件
  5. android中java和一般的java有何区别(答得比较差,说了google针对android封装了许多东西,比如说AsyncTask等,然后android运行在Dalvik虚拟机,并不是普通的jvm上,同时字节码也不同,巴拉巴拉巴拉)
  6. 项目中是如何优化ZXing二维码扫描的。
  7. java中的多线程池。
  8. 手撕一个android中多线程实现贪吃蛇的逻辑,在线程中获得上下左右方向,并更新UI(这里其实主要考察的是线程的使用,以及android中不能在子线程更新UI等)。

9月17日 华为二面

  1. 先介绍项目。
  2. 手撕一个字符串问题,在字符串a中找到字符串b第一次出现的位置,以及出现了几次(我闷头一想这不是kmp吗,结果写了后,面试官说,你直接substring不就行了,些什么kmp,那一刻,觉得自己挂了)
  3. 说说项目中如何处理数据库并发的。
  4. 如何解决sql注入攻击(我说了参数绑定,面试官似乎不怎么满意)。
  5. 内存泄露
  6. 如何优化二维码扫描(和一面面试官同样的问题)
  7. java中8大基本数据类型。
  8. java泛型
    (还有些不大记得了)

9月17日 华为三面

  1. 先介绍项目,每一个都介绍,面试官对第一个比较感兴趣,叫我仔细给介绍,然后还和我探讨其中一些硬件方案。
  2. 有什么乐趣,我说看中超,面试官说我心脏很强大啊。
  3. 问了一下android中四大控件,不是说三面就是聊聊人生吗。
  4. 活动的启动模式,平时怎么使用的。
    (其他就是一些人生话题了)

9月17日 美团一面

  1. 项目,每一个项目,感觉美团一面全程挖项目。
  2. 画一下MVP模式,介绍MVP带来的好处。
  3. 手撕两个数组合并成一个数组,保持有序,写出空间和时间复杂度。
  4. 如何优化二维码扫描。
  5. android的静态广播和动态广播
    大部分在聊项目,就项目中的一些点做了一些询问。

9月17日 美团二面

  1. 介绍项目
  2. 项目难点
  3. 微信小程序是如何运行起来的(我只说了从服务器上下载程序包,然后面试官问什么格式,我不知道,然后面试官就说其实就是一个zip,然后跑起来的是H5,这个介绍对我而言非常重要,因为百度面试管也同样问了我)。
  4. 问我做了很多上层应用的开发,那对算法和数据结构还掌握多少,我说数据结构还行,算法有点薄弱,然后他说那就写个算法吧,懵逼,写个n的阶层吧,一下觉得面试管又在逗我,最后写完,他说我只是看看你还记得递归不,我……..
  5. 问了android其他的开发框架,以及新的开发语言Kotlin等等。
  6. 进程间通信方式
  7. 内存溢出
  8. java内存模型
  9. GC
  10. tcp和udp

9月17日 vivo技术面

  1. 介绍项目
  2. android的消息机制
  3. 广播分类,静态广播和动态广播的区别。
  4. android中的服务,可以在服务中做耗时操作吗。
  5. 你们是如何做进程保活的,介绍一些oom值。
  6. 将一个数组分成两部分,使其和相接近,我说了和接近就是做差接近于0,然后采用递归尝试着将一个数放到左边右边,面试官说那如果最后一个数很大呢,不会了……其实这个题应该用dp,采用背包问题思想。
  7. 聊了约瑟夫环问题,1-50个人,围成一圈,报数每9个出去,最后一个是谁,我说用循环单链表。
    还有一些记不清了。

9月18日 欢聚时代一面

  1. 聊项目
  2. android 活动的生命周期和启动模式。平时用了哪些
  3. android的消息机制
  4. android的view绘制,
  5. android 的事件分发,三个主要的函数。
  6. 内存泄露
  7. 如何找到界面卡顿(当时不知道)
  8. java中四种引用,new一个对象会被回收吗
  9. GC算法
  10. 手撕 找到一个链表的中间元素,找到倒数第k个,有什么高效的操作,没想出来。
  11. tcp和udp
  12. 如何优化二维码扫描
  13. 如何做的进程保活

9月18日 科大讯飞一面

  1. 活动的生命周期。
  2. 项目
  3. 科大讯飞的语音合成你使用了,有什么问题,答了一些多音字读不准确。
  4. 介绍了OCR,介绍了Tesseract。还问我现在如果叫我继承一个OCR,识别手写体需要多久,我说很快,因为不需要训练数据集。
    科大讯飞可能在android端没什么大的投入,所以聊了一些其他的问题,也不怎么记得了。二面在技术上就画了一下后台的项目分层结构。

9月18日CVTE电话面试

  1. 进程保活和活动拉起,简历有写
  2. 如何优化二维码扫描,还聊到了微信的二维码扫描。
  3. 你怎么看C++和java,巴拉巴拉巴拉
  4. java泛型
  5. java四种引用
  6. GC算法
  7. volatile关键字
  8. synchronized和reetrankLock
  9. awit和sleep的区别
  10. 为什么迅雷服务器下载会比浏览器快一点(叫我放开思想想一下,我说可能迅雷中间经过了他自己的服务器)
  11. https,对称加密和非对称加密
  12. 线程池和关键参数。
  13. 实时性要求很高的是游戏是tcp还是upd。

9月19日 百度一面

  1. 重新说一遍笔试题中的SparseArray和Hashmap的区别。
  2. 介绍项目
  3. 二维码扫描如何优化
  4. Camera如何调焦
  5. 重载和重写的区别
  6. 如何在子类中调用父类的方法
  7. 介绍项目中的东西,将界面的结构画出来,特别是层级关系。
  8. RecyclerView和ListView的区别
  9. android的消息机制,Handler的构造函数有传入Looper的吗,Looper.prepare是干什么的。
  10. 开发一个微信小程序的过程是怎样的,微信小程序是如何运行起来的(此时真的很感激美团二面面试官)
  11. js是如何调用java代码的,我说了我用过WebView写过混合开发,懂一丢丢。
  12. 写布局文件时需要注意什么?如何优化。
  13. 微信小程序是基于什么运行的,我说了H5,面试官说其实就是一个浏览器跑了一个本地的网页,也就是H5。

9月19日 OPPO技术面

  1. 介绍项目
  2. 聊项目,面试官用过ZXing,所以对我用的ZXing以及优化这块非常感兴趣,还说二维码识别其实只需要部分信息就可以。再问我有没有从bitmap上下功夫,我说失败了。
  3. 什么是ANR
  4. 四大组件
  5. 广播的种类,以及使用。
  6. android的消息机制。
  7. view的绘制
  8. 内存泄露,使用什么检查,我说LeakCanary,他说LeaksCanary只能检查一些组件啥的,并不全面。
  9. GC算法,GC Root中存放了那些信息。
  10. 标记-整理如何实现。

9月19日 欢聚时代二面

主管面,没有多少技术问题,大多关注在项目上。

  1. 项目,难点,给面试官看了写的微信小程序。
  2. 二维码扫描优化如何做的。
  3. 前后台是如何分工的。
  4. 在培训用户中的难点是什么。
  5. 觉得把对用户培训的时间拿来学习算法和数据结构是不是要好很多?
  6. 工作地点等等……

9月19日 CVTE视频面(凉面)

1 . 介绍项目

  1. 项目中用到了什么设计模式,打了单例模式和观察者模式
  2. 写一个观察者模式,写得不好,连观察者和被观察者都没有搞清楚。
  3. 介绍一下MVP,MVVM
  4. 介绍一下2018年google开发者大会上提出的AAC(完全不知道,哎)
  5. java中的四种引用
  6. Android各个版本的新特性。
  7. LeaksCanary原理,还有用过其他的内存泄漏检测工具吗
  8. okttp源码了解吗
    其他的不记得了

9月20日 百度二面

(这是我遇到最新颖的面试,面试官抛出概念,我自己讲,能讲多少讲多少)

  1. 深挖简历上的各种了解。
  2. 讲一下okttp,那些关键的对象,同步和异步的访问函数。client是那个client
  3. ButterKnift如何使用,需要注意那些问题
  4. DataBinding如何使用,了解其实现原理吗,你都不用MVVM,你用DataBinding干什么。
  5. 讲一下AIDL,说说进程间通讯方式。
  6. 除了GPS定位还有什么定位,我说网络定位,问我如何实现,我说不知道,他开导说手机连接着什么嘛,我说基站,然后一通巴拉巴拉,不知道自己说了啥。
  7. 讲一下二维码扫描的优化
  8. 说一下如何做到进程保活的,什么是oom值,以及JobScheduler
  9. 学过C++吗
  10. jvm内存分区,栈溢出发生在那
  11. 手撕 从先序遍历和中序遍历复原原来的二叉树
  12. 手撕 快排 插入排序
  13. https的机制,加密,证书秘钥交换等。
  14. android 的消息机制,
  15. view绘制
  16. 事件分发流程,拦截函数叫什么,用没用过事件分发。
  17. 学android看了那些书,《第一行代码》有多少页,第一行代码和开发者探秘有那些内容。
  18. 布局优化。

9月22日 百度三面

主管面,一半人生一半技术吧,最后介绍了20多分钟目前他所在的部门所在做的东西,真的超乎了我这种菜鸡的想像啊。

  1. 聊项目,很细很细
  2. 很关注二维码扫描优化这块,有没有在bitmap上下功夫。
  3. 为什么做进程保活和活动拉起
  4. 为什么地图用百度的,语音合成用科大讯飞的,我说做了一些比较,发现百度的在某些多音字上读不正确。
    其他的就是一些人生话题,三面感觉真的很nice。

资料

java 计算机网络 操作系统等
Android相关
大神整理的剑指Offer

~~客官随意,我只是学习怎么配置打赏而已~~