文章目录
前言
作为大四的应届生,曾经在2019年9月份记录了秋招时遇到的一些面试,文章地址:
一个小菜鸡的秋招面试记录。由于对原公司的一些制度感到不满,决定离职并参加第二年的春招。经过一段时间的学习后,在三月上旬的两个星期的密集面试中(几乎一天平均三场面试),也算是成功上岸了,这里将面试的经历通过博客记录下来,分享给即将要参与2020年下半年秋招的读者参考。
如果没有特别提及,可以把以下公司中我申请的职位都默认为软件工程师(Android方向)
先说说本人的情况:双非普通一本,计算机学院的大四学生,专业为网络工程。从3月开始系统地学习Java,直到9月开始正式参加秋招。秋招中找到了一家大数据公司并签署了三方,后觉得公司的一些制度不太合理再加上对于Android方向要更有兴趣些,所以才决定参加春招。
相比于Java,Android方向的岗位更多是看中计算机网络以及数据结构这些,基本的知识点较多,深入的知识点也有一些,多集中在自定义控件,框架的深入理解等。由于疫情原因,所有的面试都是基于线上进行的。为了节省篇幅,这里直接贴出面试中遇到的问题,就不再详细描述其他情况了。
最后,由于部分面试仅仅是询问基本情况,没有涉及到技术方面的问题,就不一一列出了。
1.君海游戏
操作系统
- 进程和线程的特性,区别
- 进程和线程的优缺点
- 操作系统的死锁,如何处理?
- 银行家算法的细节
计算机网络
- 三次握手为什么必须是三次
- Https协议和Http协议的区别,SSL加密协议的具体内容
- 网站的证书了解吗
Linux
- 现在在Linux系统中有个需求:查找Linux系统中某个包含有特殊字符串的文件,有什么方法?
Android
- View的绘制流程
- 某一个第三方框架的底层源码了解吗
Java - 保证变量在多个线程之间的可见性该怎么做
逻辑题
- 假设在你面前摆放着4张长方形卡片,每张都是一面写有字母且另一面写有数字,这4张卡片中有两张是字母朝上,两张是数字朝上,朝上的一面分别是A、K、8、5。你的任务是选择翻开一张或多张卡片,以检查下述规则是真还是假:如果卡片的一面是元音字母,那么,它反面的数字是偶数。现在请指出哪张卡片是必须翻开的。
2.同花顺
- JNI和NDK的区别
- RPC和Http请求的区别
- Android NDK的调用流程
- OpenCV库的目录结构
3.微派
- 算法题,动态规划,数组中的数实现跳跃
- 算法题,实现一个简单的计算器,有()、+、-
- Activity的启动模式
- Handler的传递机制
- 写服务器用到了什么框架
- 觉得计算机有什么比较厉害的设计
4.桌动
- 谈谈OSI和TCP/IP
- 谈谈TCP和UDP的区别
- Android的四大组件
- Service的工作流程,与线程的区别
- Handler的传递机制
- ANR问题
- App混淆
- App的签名机制
- JVM的类加载机制
5.尘原
- 描述四大组件
- Activity的启动模式
- Activity的生命周期
- Service的两种绑定模式
- BroadCastReceiver有哪两种注册方式
- RecycleView和ListView的区别
- 常见的布局
- OkHttp是怎么使用的
- Glide是怎么使用的
- Android NDK有用过吗?
- 有没有用过自定义View
- 简单聊聊项目
- 熟悉的设计模式
- 工厂模式的作用
- 单例模式的两类
- 常用的框架有哪些
- 工作中遇到的难题
- 学习上遇到的难题
6.亿联
基本上就是聊聊使用过的技术栈和相关项目,不算是太正式的技术面试
7.虎牙
- 找到无序数组中第n大的数,说的是快排的思想。
- 两根绳子,一根烧完要1小时,表示出45分钟
- Http和Https的区别
- SSL协议所使用的加密方式(AES)
- TCP保证数据传输的可靠性
- Object类方法,详细说说equals和hashCode(这里把对应关系说反了,凉凉)
- Java线程安全手段
- Java内存模型
- 内部类有哪些,内部类为什么可以访问外部类的成员
- Handler的消息传递机制
- 一个线程可以有几个Looper,几个Handler
- Error和Exception的区别,常见RunTimeException。
8.步步高
- Service平常是怎么使用的
- Service的启动模式
- Fragment的生命周期
- 怎么创建一个线程
- 怎么保证线程同步,并发场景:对象A能同时获取加了锁的B方法和C方法吗
- TCP和UDP的区别,应用场景,UDP丢包怎么解决
- Http和Https的区别,SSL协议怎么保证安全性
- ContentProvider的底层实现(即为什么可以保证数据安全传输)
- 谈谈单例模式
- 谈谈代理模式
- 设计模式平常是怎么使用的
- 子父类的构造方法的调用关系,场景:如果子父类都有无参和有参的构造方法的调用关系
- 为什么选择xUtils来做网络缓存,而不是用OkHttp这些
- 有没有遇到过ANR?怎么解决
- 有没有遇到过OOM?怎么解决
- Handler消息传递机制
- View的事件绘制流程
- 有没有自定义过第三方View
- 怎么解决滑动冲突
- 三级缓存的使用原理
- ViewPager怎么实现和Fragment联合使用
- List,Set,Map的区别和联系
- 详细谈一下HashMap
- Set怎么保证底层数据不会重复
- 有没有了解过Android的插件化和热修复这些技术
- 有没有对代码进行过重构
- 项目里用到的动画是哪一种,动画有哪几类
- 有没有了解过性能优化的一些步骤,比如说过度绘制应该怎么优化
- 解决if嵌套应该用什么方法
- HashMap怎么解决哈希冲突
- 有没有使用过泛型?一般用来做什么?
9.东方蓝深
9.1 初试
- 说说面向对象的三大特征
- 说说Java的基本数据类型
- 谈谈ArrayList和Vector
- 谈谈Cookie和Seesion
- 谈谈线程
- 谈谈servlet的生命周期
- JS了解地如何?
- 谈谈Spring
- 谈谈Oracle
- Android这块的了解深度
9.2 复试
- 自我介绍
- 项目的整体流程
- 介绍一下云计算
- 简单讲解一下三层架构(MVC)
- 常用的技术栈是什么
- 开发项目中遇到的最大挑战是什么
10.华为
- 说说树的遍历模式,如何使用代码进行实现
- 说说堆是哪种类型的排序,选择排序
- 信号量实现了什么功能,分为哪几种
- 死锁的必要条件
- 代码量主要在哪里
- Linux了解得怎么样
- 算法题:大字符串包含小字符串
11.浩鲸
11.1 初试
- 介绍一下四大组件
- 有没有做过屏幕适配
- 介绍一下常用的View控件和Layout布局
- 网络连接用的什么框架来实现
- 有没有了解过MVP框架?有做过什么项目吗
- 了解过Kotlin语言吗?
- 介绍一下Java中的集合类
- 介绍一下LinearLayout的布局属性,layout_weight属性是用来做什么的
- 有没有自定义过泛型?
- 了解过React Native吗?
11.2 复试
- 自我介绍
- 之前有考过研吗
- 对公司的类型有什么要求(理解成进公司能学习到什么了)
- 文化课成绩怎么样,绩点是多少
- 目前面试了几家公司
- 秋招的情况
- 有什么兴趣爱好
- 如果公司和其他公司都给你发了Offer,优先考虑哪里
- 四级成绩是多少分?六级成绩是多少分?
- 觉得个人比较突出的地方在哪
12.中科传达
12.1 初试
- Java的Synchronized实现方式
- final修饰符的作用
- Java的线程安全机制
- String类中常用的几个方法
- Android的Activity、生命周期等
- Android的Service、调用方式,生命周期
- Activity和Service的区别
- Linux熟悉吗
12.2 复试
- 自我介绍相关
- 高考成绩
- 社团情况
- 对公司的要求以及期望薪资
- 公司相关
13.吉利
- 面向对象的三大特征
- Activity的生命周期
- JVM的底层组成
- Linux熟悉吗?查看线程状态用什么命令?
- Flutter用的怎么样?
- Redis是怎么使用的?
- 项目中遇到了什么难题?是怎么解决的
- Tomcat服务器熟悉吗?底层原理了解吗
- Spring Boot了解地怎么样
14.南天
- Spring Cloud了解吗?
- Spring Boot了解吗?
- Zookeeper是怎么推送消息的?简单聊聊发布——订阅模型
- 常用的关系型数据库有哪些?MySql的左右连接有什么区别?
- 常用的非关系型数据库有哪些?
- String、StringBuffer、StringBuilder有什么区别?
- 线程有哪些状态?
- GC收集器有哪几种?
- 对于集合的了解
- 聊聊项目中的个人成就
15.Insta360
15.1 初试
- 简单介绍一下项目
- 项目的数据是怎么获取的?
- Gson是怎么使用的?
- 项目里有没有做过分页?
- 三级缓存的原理?LruCache的底层数据结构
- LinkedHashMap是什么?跟HashMap的区别
- 详细说说HashMap
- 有没有了解过事件分发的框架,例如EventBus?
- 聊聊Handler传递机制
- 谈谈ListView中的一些原理(Adapter的设计模式、复用机制、ViewHolder的用法)
- 简单谈谈代理模式
- 怎么理解弱引用
- 动画有哪几类?
- 怎么理解由Handler导致的内存泄漏
- 算法题:传入一个路径,规范成一个简化的路径(传入栈中)
15.2 复试
- 自我介绍
- 预期薪资
- 公司的一些详细介绍
16.4399
16.1 初试
- 简单谈谈项目
- 图片缓存怎么做
- 用什么框架实现网络请求
- Android中的动画种类,自定义动画怎么实现
- Service怎么获取Activity的数据(其实就是问进程间通信方式,当时没听出来)
- 了解设计模式吗,Android的一些源码有哪些设计模式
- Android创建线程的方式
16.2 复试
- 自我介绍
- 平时学习的方式
- 大学的兴趣爱好
- 有没有挂过科
- 大学的生活安排
- 为什么对实习单位不满意
- 能接受加班吗
- 预期薪资
17.长海
- 简单谈谈项目
- 数组和链表的区别
- Spring中的作用域范围
- 常见的排序算法,快排的规则
18.联通
- 实习中主要负责哪个模块
- 能简单讲讲Spring Cloud的各个组件吗
- 讲讲Java OOP思想
- Servlet和Jsp的区别
- Linux中如何查看日志(当报错的情况)
- 接口和继承的区别
- 熔断的具体功能是什么