美文网首页Android开发Android开发经验谈Android技术知识
2020全球经济衰退下,程序员也能像“姐姐们”一样乘风破浪吗?

2020全球经济衰退下,程序员也能像“姐姐们”一样乘风破浪吗?

作者: jett老师 | 来源:发表于2020-06-22 17:55 被阅读0次

    前言

    最近有一档节目,可谓是火爆了朋友圈,乘风破浪的姐姐,相信大家都不陌生吧!至于为什么这么高人气高名气的大明星,要来参加一档这样的节目呢?很现实,因为没戏拍!这个女团一出就备受所有人关注,毕竟都是自带流量,自带话题度的明星。这个号称史上最有“经验”的女团,会碰撞出怎样的精彩呢?拭目以待吧。

    说到这里我想问一句今年大环境真的有这么差吗?最近听闻娱乐圈寒冬,餐饮业寒冬,房地产寒冬。今年最火的词语“寒冬”C位出道啊!到哪里都说不景气,每个人都喊穷,我在互联网这块也很多年年了,虽然不能说很厉害,但是经验还是有一些的,毕竟后面当了面试官的!下面是我是小菜鸡的时候经历的面试!

    在我看来找工作的重点就是:广撒网,多捞!(简历网上,公司拼命投)

    现在我来介绍一下每个公司面试偏向的重点!

    有请2年之内火爆全网的 拼多多

    笔试

    基于给定接口实现ImageLoader框架

    一面

    1. 自我介绍
    2. 静态变量和实例变量的区别
    3. 重写equals()方法的注意事项;两个list是怎么判断是否相等的?
    4. HashTable和HashMap的区别;是否允许键为null
    5. 数据同步的方法;synchronized可以在对象上加锁吗?在方法上加锁是加在哪个对象上?
    6. 进程间读写文件的同步方式
    7. 了解哪些加密算法;AES和RSA的区别
    8. HTTP响应码
    9. 进程优先级;Android进程优先级
    10. 如何使一个Service处于另一个进程中;进程的服务保活
    11. Touch事件分发机制
    12. 如何实现客户端长连接的?重试策略是怎样的?如何监控HTTP请求的?
    13. 提问问题

    二面

    1. 三道题选两道http://collabedit.com/cx9uv
    2. 大顶堆和栈的概念
    3. 最短路径算法概念
    4. 如何缓存HTTP

    HR面

    也不能算是HR面吧,简单聊了聊。

    1. 项目介绍;担任的角色
    2. 家庭情况;期望薪资
    3. 在哪里实习?实习的时候拿到过哪些offer
    4. 介绍了拼多多的待遇以及工作制度

    三面

    1. 自我介绍;项目问了些
    2. 如果安卓是单线程的,那么如何处理界面刷新和网络操作两个模块
    3. 算法题。

    二请 CVTE TE计划 Android开发工程师 HR面挂

    (虽然挂了哈!但是我觉得题目内容还是不错的哈!大家可以参考参考)

    一面 电面

    1. 自我介绍
    2. Activity的launchMode,每种的概念;singleInstance用在什么情形
    3. 转动屏幕时会发生什么?如果有一个进度条,转动屏幕时会发生什么?如果是自定义的进度条,怎么办?
    4. Thread和HandleThread有什么区别;MessageQueue的结构
    5. 进程和线程的区别;Android的多进程通信方式;aidl是怎么使用的
    6. 多线程的问题。每个线程一个单例,怎么做?ThreadLocal怎么用的?
    7. 浏览器输入www.google.com之后用到的协议;NAT是怎样的?
    8. 内存泄漏的情况;Handler泄露的具体场景,如何避免;GC的过程;强软弱虚引用
    9. 如何复用View;ViewHolder是如何使用的;ListView是如何复用View的
    10. 事件分发机制;dispatchTouchEvent和onTouchEvent的区别;
    11. 了解过哪些开源框架;OkHttp和HttpURLConnection的区别
    12. 职业规划

    二面 视频面

    1. 自我介绍
    2. 长连接如何实现的;TCP粘包怎么处理的;协议改进的方法;MINA、Netyy框架
    3. OkHttp的源码,拦截器一块的源码;有没有自己实现拦截器;OkHttp这样设计的好处;Volley缓存一块的设计;UIL如何管理请求的;
    4. Android的性能优化;
    5. 为什么有滑动冲突;怎么处理;涉及的主要方法有哪些;dispatchTouchEvent、onInterceptTouchEvent和onTouchEvent分别用在什么地方
    6. Binder的机制;aidl;服务端如何确定调用的是哪个方法;Binder线程池,线程安全指什么;
    7. RxAndroid用在哪里;用到了哪些操作符;map和flatMap的区别
    8. 项目中用到了哪些设计模式;模板方法是怎么使用的
    9. 手写代码,实现一个数据结构:栈,考虑扩容,加入线程同步。
    10. 写过博客吗?主要内容是哪块;参与过开源项目吗?
    11. 了解过Android的最新动态吗?有没有用Kotlin做过项目;如何学习一门新语言
    12. 了解过CVTE吗?以后的职业规划

    终面HR QQ视频面

    面了两次CVTE的hr面,总结了会问的问题。如下:

    1. 前面的面试如何,打个分
    2. 职业规划;工作时间
    3. 家庭情况;性格都是怎样的,对你的性格有什么影响
    4. 如果CVTE给你offer了,如果不会来,会是什么原因
    5. 目前拿到了哪些公司的offer?CVTE也给你offer了,你会选哪;还会再投其他公司吗
    6. 宿舍关系怎么样?人生中压力最大的事情

    HR面又挂了,实习的时候也是HR挂了,让我不得不怀疑我是不是心理有问题了,哈哈。

    三请 远景能源 闪亮登场 offer到手

    由于实习的时候拿到了实习offer,所以走的绿卡流程。在上海实习的,就直接去公司面试的。

    一面技术

    1. 自我介绍
    2. 说了下?做的是什么?
    3. 使用的UI自动化测试框架的原理是怎么样的?讨论一下iOS是如何进行UI自动化测试的
    4. 对热修复的理解;能否修复so包?
    5. GC;碰到的OOM情况;聊到了参加的阿里中间件比赛,说了下当时的思路;如何进行内存分析
    6. TCP编程时的协议是如何制定的;有什么改进的地方;PB的编码方式是如何的,如何可以节约空间的。
    7. 聊了聊RN以及对技术框架选取的一些看法

    HR面

    HR面比较简单

    通过技术面后做了两个测评,类似心理、情商评价之类的。

    高管面

    高管面比较简单,就QQ视频了5分钟,简单聊了下实习的氛围和以后的打算。

    offer到手,美滋滋!

    四请 有赞

    一面 Android开发工程师

    1. 自我介绍
    2. 如何学习Android
    3. 如何设计一套图片加载框架;三级缓存。为什么选择LruCache?
    4. 了解过launchMode吗?使用过的具体模式的场景?微博分享页面应该使用哪种launchMode?
    5. 知道内存泄漏吗?了解的内存泄漏?Handler在哪种情况下会引起内存泄漏?什么好的工具可以检测内存泄漏?
    6. IntentService原理
    7. 用过WebView吗?
    8. 如何实现一个图片浏览器的思路?
    9. 有什么想要问的?

    附赠一份有赞 Java开发工程师 的面经

    一面

    1. 自我介绍
    2. 项目提问
    3. TCP连接;为什么不是两次;为什么不是三次
    4. HTTP请求报文结构;GET与POST请求;HTTP版本知道哪些,区别是什么
    5. 进程调度算法有哪些;死锁的必要条件;如何消除;如何避免;银行家算法;
    6. Java的集合;HashMap的结构;为什么改成红黑树;阻塞队列一般用在什么地方
    7. Java泛型;泛型擦除;任何情况下都会发生泛型擦除吗?
    8. 双亲委派机制;两个类被不同的类加载器加载,是同一个类吗?
    9. 如何实现一个线程;线程的状态机;什么情况会使线程阻塞;ThreadLocal;几种线程池;如何自己设计一个线程池

    二面

    1. 自我介绍
    2. 自己做的app是怎么做的;
    3. Java的GC;ActiveMq看过源码吗?MySql学习过吗?
    4. 使用过哪些设计模式?
    5. 编程。主要考察编程能力和编程习惯。一个字符串,统计某个字母出现最多次;写好之后,改了需求,找出出现次数最多的十个字母
    6. 双亲委派模型;为什么要双亲委派模型
    7. 提问问题

    五请 平台大佬 头条 Android开发工程师 offer

    终面(招拿到了offer,绿卡)

    1. 实习项目介绍;如何实现的;为什么使用反射;XML解析的方式;DOM和SAX解析的区别;注解的分类;ButterKnife实现原理
    2. MVP模型是怎么样的;如何实现的;P层是怎么实现的
    3. 为什么选用OkHttp库;拦截器链是如何实现的;自己实现的拦截器是用于哪里的;是如何做DNS的;
    4. 处于onResume的activity a启动activity b按照时间顺序生命周期是如何调用的;onSaveInstanceState方***在什么情况下调用
    5. View的事件分发机制;ACTION_CANCEL什么时候被调用,一般switch-case中如何处理;
    6. Android常见引起内存泄漏的情况;Handler引起的内存泄漏是怎样的一个过程;使用过哪些工具进行内存泄漏问题;LeakCanary的工作原理是怎样的;MAT如何进行内存泄漏分析;
    7. HTTP2和HTTP1.1的区别。HTTP/2 新特性浅析
    8. 手写算法题。一个二维数组,左到右有序,上到下有序,如何找一个值。剑指offer原题。
    9. 看过哪些源码;如何看源码;如何学习Android

    一个月后拿到了意向书,互娱部门,做抖音。

    六请 阿里文娱 优酷 Adnroid开发工程师 挂

    终面(春招拿到了实习offer,直通终面)

    1. 自我介绍,项目介绍
    2. 阅读类APP有没有后台?没有后台的话,每一个app都要去获取多余内容可以怎么改进?爬虫怎么做的?
    3. ImageLoader怎么实现的?三级缓存怎么做的?保存图片在内存中会发生OOM吗?
    4. MVP模式的理解
    5. 信息推送怎么实现的?协议怎么设计的?AES算法是怎样的?如何保证数据的正确性和不遗漏消息?
    6. 实习的项目是如何做的?怎么去匹配XML和TXT中的字段?
    7. UML了解吗?软件开发流程是怎样的?
    8. 设计模式了解吗?如果一个支付的模块,会调用不同银行的接口,不同银行的接口所需参数和返回参数均不同,使用哪种设计模式?
    9. Android机型适配怎么做?如何捕获Crash?
    10. 本科和研究生均不是计算机的,怎么学习的?
    11. HR问了工作地点的意向;投了哪些公司;目前拿到了哪些offer
    12. 提问了面试官关于Android APP测试的问题,了解了行业情形

    1v2,技术经理和HR,HR是远程实时听录音的

    半个多月后问hr,挂了。真是坑比啊,由于把我简历锁着,我一直报不了杭州这边的阿里,笔试面试都没有机会。rlg了

    七请 网易 内推 Android开发工程师 挂

    一面

    1. 自我介绍;除了Android还做了其他的哪些项目;
    2. Activity的lauchMode;用过哪些;说了一个他们遇到的问题,让帮分析分析
    3. 知道的网络库有哪些;Volley和OkHttp分别适合用在什么场景下
    4. ImageLoader的三级缓存是怎么实现的;磁盘缓存是怎么实现的;知道哪些图片加载框架
    5. 内存泄漏如何检测;LeakCanary的原理;Handler是如何造成内存泄漏的;内部类都会造成内存泄漏吗?
    6. 参加的阿里中间件比赛是怎样的;简单实现一个生产者-消费者
    7. Java的线程池有哪几种;需要定时任务使用哪种;CachedThreadPoolExecutor是怎样的
    8. 应用通信是如何确保安全的;Https是怎样的;Android如果采用Https通信的话,客户端这边需要有什么
    9. 提问问题

    二面

    1. 对Android框架层了解吗?AMS和WMS了解吗? (说了了解AMS,噩梦由此开始)
    2. Fragment用过吗?Activity如何传参给Fragment?为什么用setArgument传参,而不是使用带有参数的构造器?
    3. 知道系统杀进程吗?如果栈中从底到顶现在是A,B,C,然后系统把应用杀了,重新点击,显示的是哪个Activity?这时如果C里面有Fragment是怎样恢复的?(中途解释了为什么要用setArgument传参,说在走Activity的生命周期之前会先有一个恢复过程,反正听的云里雾里)栈下面的A,B存不存在
    4. Binder机制;为什么Binder是一次拷贝
    5. TCP的连接为什么是三次握手,不是两次也不是四次
    6. Activity和Service有什么区别;Service是谁管理的;bindService需要使用到Binder吗?系统服务和自定义服务启动有什么区别?
    7. 对协议的理解

    秋招正式批的时候,又做了网易笔试,后来又通知去笔试,但由于已确定去51信用卡了,就没有再去杭州面试。

    总结

    准确的讲,找工作是从春招开始的,因为当初的找实习也是为了秋招找工作增加经验。关于实习的面试经历,可以参考2017春招实习-Android开发面经-bat,td等公司,最终出于工作地点的考虑和卡中心的福利,选择了去卡中心实习,也顺利转正了。由于比较想去杭州发展,所以重点投了杭州的一些独角兽公司,比如51信用卡、有赞、挖财、贝贝等等,也算有幸拿到了两家的offer,所以最后也选择了51信用卡。关于校招,想说的很多,经验也有不少,总体来说:基础(算法、语言、网络、操作系统...)+项目+面试表现。

    基础与算法

    至于基础的话,算法很重要,因为算法渣,很难过笔试,关于这方面,掌握基础算法(排序,查找,树和图的遍历等),把剑指offer刷一遍,再刷些leetcode应该差不多了。(秋招,没过的笔试有百度、搜狗、蘑菇街、滴滴、搜狐、新浪,有些公司不招人那就没办法了)推荐一本书:数据结构与算法经典问题解析:Java语言描述(原书第2版)

    语言

    java的搞java,c++的搞C++,现在源码问的很多,看几篇面经和博客就可以了。

    网络

    网络的话,主要就是TCP、UDP、HTTP1.1/2.0、HTTPS。TCP设计连接、断开连接、拥塞控制、流量控制等等;HTTPS设计证书下发,加密算法等等。最好有网络编程的经验,对TCP的分包粘包这种概念理解更深,以及TCP协议的设计和序列化,这里可以了解下protocolbuffer序列化方式。对于Java开发者,Netty源码可以看看;对于Android开发者,OkHttp可以看看,可以加深对HTTP协议的理解。

    操作系统

    春招时,被阿里问到了进程管理,当时没看操作系统,然后就白瞎了。我认为主要掌握进程管理、内存管理,这是问的比较多的。其他部分的话,追求越高,自然懂的也就要越多

    项目

    项目就仁者见仁,智者见智了,不过建议是可以放到github上,包装包装。

    其他

    面试表现=80%基础+20%临场发挥,所以基础很重要,基础很重要,基础很重要。关于比赛和论文,这些都是我没有的,这些也都是加分项。之前参加了阿里中间件比赛,进了复赛,面试中也被问到过几次,还没找工作的朋友们可以准备准备,还来得及。

    结束语

    我把我这些年参加面试的或者说自己面试过程中问的一些问题都做了一个总结,分类整理在了一个文件夹里面,面试题不在多但是必须系统,所以不仅有各个大厂最新的经典高频面试题 还有根据 数据结构与算法,JVM,计算机网络,JAVA基础,源码,FLutter,NDK音频开发,Kotlin 这些热门知识系统的分别整合成了一个进阶资料包(上面的答案解析也都有哦!)需要的可以点击我【BATJ系统面试学习资料直接下载全部资料吧!

    最后祝大家都能找到一个满意的工作,满意是针对你自己的水平和期望而言的。水平是根据你的天赋和付出而言的,什么都不做而拿不到好的offer而说不满意,这是不对的。心态很重要,认识自己很重要。

    相关文章

      网友评论

        本文标题:2020全球经济衰退下,程序员也能像“姐姐们”一样乘风破浪吗?

        本文链接:https://www.haomeiwen.com/subject/dmlffktx.html