怎么做到年薪50w+?2021程序员面试题合集精解合集(附答案和解析)

时间:2021-7-9 作者:qvyue

怎么做到年薪50w+

2011年从哈工大的计算机学院毕业,截至到今天是北漂的第七年。2017年,我在百度工作满5年,薪资是36k*15=540k,还有额外蹭到的一些股票。身边能达到这个level的同事同学也不在少数,年薪50w,大概就是百度T6,阿里P7,腾讯T3的级别。

要达到这个数值,核心有三点:

1.过硬的技术实力&学历是的, 除了实力之外,学历是很重要的敲门砖;答主也曾经负责过百度某项目组招聘,211是基本门槛,研究生和海归有比较明显的优势。现在本科毕业迷茫就业还是读研的同学,如果想通过技术之路拿高薪,还是建议通过读研or留学历练两年。已经毕业的学弟学妹,想要获取薪资的提升,除了跳槽之外,也建议通过在职研究生补充下学历。

2. 优质的平台所在企业营收能力较强是必备条件之一, 毕竟当你拿到50w年薪的时候,企业所实际支付的人力成本(五险一金等)是70w以上。国内能给到技术这个数值的,除了BAT,小米美团等一些明星互联网公司外,还包括一些金融企业,和拿风投到手软的明星创业企业。

3. 正确的技术方向有时候,选择比能力要重要,站在风口上,猪都能起飞。 其实从事计算机行业,从一开始我们就在做选择了。学生时代,我们就在选择究竟是主攻C还是JAVA。临近毕业,我们在纠结读研还是工作。毕业伊始,我们在讨论是要进入传统的技术公司,还是新兴的移动互联网。时至今日,想要拿到高新,依然要思考下一个红利究竟是什么,人工智能?物联网?区块链?同样的实力,善于发现和判断机会的人,永远占据先机。


接下来给大家整理了一些大厂面试真题,文章末尾还有合集,需要的自行下载保存

实习篇

字节跳动

怎么做到年薪50w+?2021程序员面试题合集精解合集(附答案和解析)

一面(60分钟)

前15分钟

  1. 个人介绍, 什么时候接触的安卓开发, 实习能实习多久, 介绍一下项目
  2. 你说你的软件出现了OOM, 你怎么解决的? 线上crash你是用了什么来分析的?
  3. 这些项目都是怎么来的? 软件中这些内容都怎么来的? 你知道后端怎么来的吗? 后端是不是爬下来的? 每天有多少上传量呢?

接下来15分钟

  1. 进程和线程有啥区别呢? 为什么要定义出这样的概念来? 有什么用呢?
  2. 哈希表是一个怎样的数据结构? 怎么避免hash碰撞? 容量有什么样的特点?
  3. 数据库有了解吗? 索引了解吗? 怎么实现的快速查找? 快速查找的是什么东西?
  4. TCP协议如何确保稳定传输?
  5. 说一下Activity的启动模式
  6. Handler有了解吗? 说一下原理? 你刚才说到Looper是个死循环, 那么messageQueue 没消息的时候那它不还是会循环占用CPU资源吗?
  7. 我看你用过一些开源库比如说okhttp, 你能说一下原理吗? 分析一下 okhttp 自带的这些 InterceptorChain 是干啥的? 这些 Interceptor 的用途呢?

然后12分钟

你觉得有什么你擅长的但是我还没问的??

  1. 那我讲一下屏幕怎么绘制view的吧
  2. 为什么多次测量性能差了呢? Compose是怎么解决这些的?
  3. onMeasure里面有个东西叫MeasureSpec, 你说一下这是一个什么样的数据

最后一道算法: 剑指 Offer 38. 字符串的排列 – 力扣(LeetCode) (leetcode-cn.com)

可能当时没答上来的只有个 HashMap 如何尽可能避免碰撞了

二面(45分钟)

  1. 你主要用的 Java 还是 Kotlin?(我: Kotlin, 面试官:那我问你点 Java 的东西吧)
  2. 怎么创建一个线程? start 和 run 的区别? 线程和进程的区别? 进程可以没有线程吗?
  3. Android 里面, 主线程的作用是什么? 刷新UI能放到其他线程里面吗? 你说的可以放到其他线程的特殊情况是什么呢? 怎么在子线程弹一个 toast?(提前 Looper.prepare 就行了)
  4. Looper.prepare 做了什么事情呢? 能介绍一下 ThreadLocal 的含义吗, 内部实现原理呢?
  5. Java里我们要访问本地一个文件, 我们应该怎么办? FileInputStream读取的是二进制流数据, 怎么读取文本呢? 怎么判断读到文件末尾了呢?
  6. 你有没有遇到什么比较难的问题呢? (我: OOM 我项目经常出现(这里想让面试官问我项目, 淦 他不问)) 什么场景会产生OOM呢? 什么原因呢? 怎么解决的呢?
  7. 假设一个图片很大, 应该怎么处理呢? (我: Glide/BitmapFactory(这里想让面试官问Glide 淦 他不问)), 具体是怎么缩放的呢? 假设 BitmapFactory 的 inSampleSize 设置为2的话, 图片内存占用缩小为多少? ARGB_8888和RGB_565的区别?
  8. HTTP请求常用的header说一下? 常见的状态码说一下? 206是什么? 你用过断点续传吗?
  9. 介绍一下Jetpack组件的ViewModelLiveData怎么用的, 为什么ViewModel可以跟随Activity的生命周期而在旋屏时候保留数据呢? (这里说到ViewModel我提到了MVVM架构, 我想让他问, 淦 他没问)
  10. 堆内存和栈内存有啥区别呢? (我这里说堆内存是gc的主要区域, 我想让他问我gc, 淦 他没问) 分别存啥?
  11. Java里面ClassLoder加载机制是什么? 是先去parentClassLoder里面加载还是我自己的里面加载呢? 这样做的目的是什么呢?
  12. Java反射了解吗? 这么去访问一些私有的方法和变量呢?

算法题: 230. 二叉搜索树中第K小的元素 – 力扣(LeetCode) (leetcode-cn.com)

刚开始递归遍历子节点个数, 面试官说你这样还会多次遍历啊, 能降低一下复杂度吗? 然后我用了中序遍历

你这个算法多线程访问可能会出问题啊, 你怎么办, 你不能限制访问者怎么用, 访问者想在多线程去跑这个算法怎么办呢?

一些可能当时没答上来, 答得不好的:

  1. 线程之间共享内存机制呢?

    线程之间是共享内存的, 但是线程之间为什么会出现不同步呢?(多线程可见性) 因为除了内存, 数据还会被缓存到CPU寄存器和各级缓存中, 当修改一个变量的时候, 可能会先写到缓存, 稍后再更新到内存

  2. ThreadLocal实现原理?

    内部维护了一个简易的hashmap, hahsmap的hashcode是根据当前线程的获取threadLocal的顺序, hashcode是使用nextHashCode方法操作一个atomicInteger, 每次都会递增一个指定的值, 然后每一个线程都会维护一个ThreadLocalHashMap, ThreadLocal的get和set方法实际上就是操作当前线程的ThreadLocalHashMap 对象

三面(40分钟)

  1. 介绍一下项目
  2. 介绍一下LaunchMode
  3. Manifest里面activity的process什么用途, 为什么要多进程呢?
  4. 一直在介绍项目…
  5. 反问: 团队对Kotlin支持态度? 对Jetpack的态度呢? 对新人培养呢?

然后三面就过了, 没啥难的, 问项目那可太简单了, 只要对自己的项目有足够的自信应该都没问题


美团

怎么做到年薪50w+?2021程序员面试题合集精解合集(附答案和解析)

一面

1、你项目中用了MVVM架构,解释一下MVVM架构的思想?
2、你项目中用了kotlin协程,能说一下协程的概念吗?
3、View层和Model层如何通信(LiveData)?DataBinding有用过吗?原理说一下?
4、https如何保证安全的?加密、证书相关
5、线程和进程之间的区别?
6、Android进程通信的方式?(共享内存、socket、Binder)它们各自有什么特点?
7、说一下Java虚拟机垃圾回收算法?
8、有用过flutter吗,还是只学过原生Android开发?
9、项目是自己写的吗?
算法题(现场手写):
(1)leetcode1:两数之和
(2)反转字符串中的单词:给一个字符串” www.meituan.com”,将其变成”com.meituan.www”

二面

1、算法题(现场写):给一个double类型的数num,求它的平方根,要求精度为1e-8。(二分法)
2、家是哪里的?期望工作的城市有哪些?
3、Java虚拟机垃圾回收机制说一下?
4、学过哪些设计模式?说一下Android哪些地方用到了适配器模式?
5、看过哪些Android方面的源码?
6、进程之间通信的方式有哪些?说一下Binder的原理?
7、对Reactive native感兴趣吗?
8、kotlin相比于Java有哪些优势?
9、你项目中的app是如何获取到停车场车位信息的?
10、解释一下kotlin协程?协程和线程之间什么关系?
反问:
(1)团队用Java还是kotlin?(kotlin居多)
(2)Reactive native和原生Android开发区别?

永辉超市

怎么做到年薪50w+?2021程序员面试题合集精解合集(附答案和解析)

技术面

1.抽象类和接口,抽象类可以实例化吗
2.匿名内部类
3.讲tcp三次握手
4.activity生命周期讲了a启动b,生命周期的变化,问:onpause为什么在前面(不会,说很复杂源码相关)
5.view绘制过程(源码相关,不会
6.handler机制(具体讲怎么从messagequeue取出message
7.looper为什么不会死循环
8.结合项目问了
9.okhttp的过程,回调只能用enqueue吗(只会这个)可以在主线程里面设置吗(不确定,说的不能,会阻塞主线程)
10.fragment,有底部导航栏,用的viewpager+tablayout+fragment,后来又用了bottomnavigationview
11.更改fragment用的什么(讲的replace,前一个会被销毁
12.如果不想被销毁用什么(add,hide,show
13.布局用的最多的都有什么
14.constrainlayout用过吗
15.touch事件的过程(好像是说源码,不会
反问
1.什么语言kotlin
2.主要做什么,app优化和开发新功能
hr面
1.工作地点有要求吗?
2.为什么想来上海?
3.讲述一件大学里最有成就感的事情?
4.两个领导两个任务相同截止日期怎么安排时间还有完成顺序?
5.领导难以沟通,但因为项目必须要沟通,你怎么办?
6.怎么看待压力,尤其是大城市的压力?
7.期望薪资?
8.讲了培训机制


社招篇

一面

  1. 是个 boss 面试我的,一上来就问我有没有了解过哪些开源框架,我先说,然后说的长轮询和轮询的区别,如果一直没消息,服务器一直hold 住连接占用资源怎么解决的
    2.让我自己做一个下载库,怎么实现,进度条要以什么形式发送出去
    3.问我android 开发时候有没用过什么框架或者什么设计模式,我好像就用过1 种模式,就是MVP,问我P(protocol)是怎么实现的,为什么要用这个模式
    4.问我其中一个项目(IM 即时通讯)是如何存用户连接的,如果是tcp/socket 长连接,是如何管理连接的
    5.问我平常app 里面用http 经常不,tcp 呢
    6.问我有没有接触过openGL,对他什么理解
    7.问我希望在哪个城市工作

二面

1.android proguard 了解吗?混淆原理,有什么作用
2.android 手势如果左右滑动和上下滑动冲突,如何解决手势冲突
3.android 事件分发机制
4.java 映射的理解
5.android 如何和cocos 游戏引擎对接,js 代码如何调用java 某个activity 里面的某个函数(这里主要是因为我有做一个android app,我有负责做android 和cocos 游戏引擎对接模块)
7.apk 瘦身从哪里入手
8.对单例和工厂的理解和使用
9.手写一个冒泡排序
10.有没有看过android 广播源码,我没看过,然后凭借自己的经验和推测,自己实现了,不

过事实上google 源码差不多也是那样的

11.还是问我有看过哪些源码,我说jdk1.7 1.8 的HashMap 。。。讲到hashCode 时候,问我源码是怎么做哈西的,讲到红黑树的时候,问我为什么要用红黑树,不用B 或者B+树

网易

怎么做到年薪50w+?2021程序员面试题合集精解合集(附答案和解析)

一面:

1.TCP的三次握手说一下?为什么是三次握手?为什么是四次挥手?
2.Service 用过吗?生命周期说一下?当内存不足时Service被杀死了,如何重启这个Service。
3.Fragment 用过吗?Activity如何传参给Fragment?为什么用setArgument传参,而不是使用带有参数的构造器?
4.知道系统杀进程吗?如果栈中从底到顶现在是A,B,C,然后系统把应用杀了,重新点击,显示的是哪个Activity?这时如果C里面有Fragment是怎样恢复的?(中途解释了为什么要用setArgument传参,说在走Activity的生命周期之前会先有一个恢复过程,反正听的云里雾里)栈下面的A,B存不存在
5.Android 的持久化方式?ContentProvider自身是否存储数据?

二面:

1.算法:实现String的endWith()方法。
2.创建线程的方式?线程同步方法?
3.垃圾回收机制说一下?
4.多态说一下?重载和重写说一下?Android启动模式说一下?如果我要实现网页一样的效果,需要使用哪个模式?
5.Android的适配了解吗?(我提了一下drawable那些,但其实这边讲得不好,面试官最后特
6.意跟我说了下,回去好好看一下适配的问题)
7.用过哪些第三方库?说一下Okhttp的优点?
8.围绕算法题,一直问有没有什么问题,哪里需要优化之类的。
9.心跳包说一下?实现方式是怎样的?
10.线程池说一下?创建和内部原理。
11.闭包知道吗?
12.跨域访问知道吗?
13.Java里面的异常说一下。
14.垃圾回收机制说一下。

京东

怎么做到年薪50w+?2021程序员面试题合集精解合集(附答案和解析)

一面

1、基本的数据类型有哪些?

2、String、StringBuilder、StringBuffer的区别?

•String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间

•StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量

•StringBuilder是可变类,速度更快,单线程操作字符串,但线程不安全

3、Fragment是什么,使用场景和生命周期

4、说一下Context和内存泄露

5、线程创建的方法?

6、Activity的启动模式和适用场景?

7、ViewPager用过吗?然后扯到了它和Fragment联合;

二面

1、自我介绍

2、介绍一下项目经历,项目中遇到最大的问题是什么?怎么解决的?

3、用过什么第三方库吗?说一下Glide Picasso有什么区别?

4、如果让你自己设计图片框架,该怎么操作?

5、内存泄露和内存溢出说一下

(1)内存泄漏memory leak :是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。

(2)内存溢出 out of memory :指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就会报错OOM,即所谓的内存溢出。

6、内存溢出的原因及解决方法:

(1)内存溢出原因:

①内存中加载的数据量过于庞大,如一次从数据库取出过多数据;

②集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;

③代码中存在死循环或循环产生过多重复的对象实体;

④使用的第三方软件中的BUG;

⑤启动参数内存值设定的过小

(2)内存溢出的解决方案:

①第一步,修改JVM启动参数,直接增加内存。(-Xms,-Xmx参数一定不要忘记加。)

②第二步,检查错误日志,查看“OutOfMemory”错误前是否有其 它异常或错误。

③第三步,对代码进行走查和分析,找出可能发生内存溢出的位置。

7、垃圾回收机制说一下?

8、有什么想问我的吗?

三面

1、自我介绍

2、你对京东的了解有多少?

3、为什么选择离职?是上一家公司不好吗?

4、你期望的薪资是多少?

5、有什么想问我的吗?

怎么做到年薪50w+?2021程序员面试题合集精解合集(附答案和解析)

学习方向给你们看一下精简版本了,需要完整版的可以找我分享 。由于简书限制网盘链接,需要相关学习笔记的可以复制我的GitHub地址,

下载获取你需要的学习笔记:复制下面GitHub链接即可
https://github.com/274942954/ByteDance-Android-Architect-learning-note/tree/master

或者复制打开链接,群文件夹自己下载:https://jq.qq.com/?_wv=1027&k=Nf77fQ97

查看我主页简介,加我vx我免费分享给你!保无偿分享!

Framework可能涉及到的知识点包括:

Android 系统架构、Zygote进程启动过程、SystemServer进程启动过程、Launcher启动过程、WindowManager体系、WindowManager体系、Binder、Handler等。 从每个话题可以多角度切入到不同的领域,全面了解候选人对进程通信机制、常用组件、插件化方案的理解程度。此外高级UI、第三方框架源码理解也是必备的知识技能等。

framwork 精编源码解析

怎么做到年薪50w+?2021程序员面试题合集精解合集(附答案和解析)

怎么做到年薪50w+?2021程序员面试题合集精解合集(附答案和解析)
在这里插入图片描述
  • 精华Android 初级-高级学习进阶思维脑图(有几百个细分支,系统学习)

我整理了面试遇到的一些知识点,并画成了思维导图的形式。方便大家复习。

怎么做到年薪50w+?2021程序员面试题合集精解合集(附答案和解析)
  • 学习笔记(只展示部分)

    怎么做到年薪50w+?2021程序员面试题合集精解合集(附答案和解析)
  • 大厂面试笔记(包含面试题+解析+面试HR必备知识+学习Android基础—高级知识点)

    怎么做到年薪50w+?2021程序员面试题合集精解合集(附答案和解析)

    2020-2021BATJZ大厂面试精编解析

    怎么做到年薪50w+?2021程序员面试题合集精解合集(附答案和解析)

    GitHub,学习知识点

    怎么做到年薪50w+?2021程序员面试题合集精解合集(附答案和解析)
怎么做到年薪50w+?2021程序员面试题合集精解合集(附答案和解析)

学习方向给你们看一下精简版本了,需要完整版的可以找我分享 。由于简书限制网盘链接,需要相关学习笔记的可以复制我的GitHub地址,

下载获取你需要的学习笔记:复制下面GitHub链接即可
https://github.com/274942954/ByteDance-Android-Architect-learning-note/tree/master

或者复制打开链接,群文件夹自己下载:https://jq.qq.com/?_wv=1027&k=Nf77fQ97

查看我主页简介,加我vx我免费分享给你!保无偿分享!
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。