360 一、二、三面面经
360智能穿戴 4.29收到意向通知书
2020/4/8
一面 45min?
- 介绍一下项目 你最熟悉哪一个 遇到过什么问题 在实习过程中最大的收获(工作流程、文档阅读、设计模式实际使用)
- Java基础: Java面向对象4个特性:继承、多态、抽象、封装。
- java基础:设计模式7大原则:
- 开闭原则(对扩展开放、对修改关闭)
- 里氏代换原则(子类对象可以代替父类型)、
- 依赖倒转原则(高层模块不应该依赖底层模块,两者都应该依赖抽象、而不是细节。 即面向接口编程)
- 接口隔离原则(建立单一接口,接口中的方法尽量少)
- 组合/聚合复用原则(尽量用合成、聚合,而不是继承达到复用的目的) has-a、 is-a
- 迪米特原则(强调低耦合、高内聚,应该对其它类保持最少的了解)
- 单一职责原则(一个类只负责一个功能)
- 23个设计模式(说说经常使用的有哪些)
- 多线程说一下
- 汉字占几个char,Unicode、UTF-8(三个char)(https://www.jianshu.com/p/44340006ae0d)(http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html)
- Android:activity生命周期、fragment生命周期、activity启动模式
- activity怎么统一管理(继承BaseActivity,但是如果第三方不能继承该怎么办(反射?AOP切面下来了解一下))
- 有什么OOM、内存泄漏说一下(对象生命周期结束未回收,webView没有及时销毁)、(context被其他实例持有如handler,消息队列、游标IO未及时close、广播接收器没有及时注销、bitmap存大图)
内存泄漏: 1.查询数据库没有关闭游标 2. 构造Adapter时,没有使用缓存的 convertView 3. Bitmap对象不再使用时调用recycle()释放内存 4. 无用时没有释放对象的引用 5. 在Activity中使用非静态的内部类,并开启一个长时间运行的线程,因为内部类持有Activity的引用,会导致Activity本来可以被gc时却长期得不到回收 6.使用Handler处理消息前,Activity通过例如finish()退出,导致内存泄漏 7.动态注册广播在Activity销毁前没有unregisterReceiver
算法:
- 图的遍历有哪几种,会遇到什么问题(可能深度太深会使栈溢出)
- 树的遍历有哪几种
java虚拟机内存模型说一下
有什么想问的(具体做些什么、技术选型)
for循环里面用new还是clone,看情况。
1.new与clone的性能差别主要在构造函数和对象包含的引用(浅拷贝可忽略); 2.若构造函数功能简单,则new耗时更少; 3.若构造函数比较耗时,则clone(浅)耗时更少(克隆不用走构造); 4.无论两者情况如何,大部分情况下深拷贝耗时都是最多的。
4.14二面 25min
首先是java基础:
- 介绍一下面向对象几个原则(抽象、继承、封装、多态)。
- String是基本数据类型还是引用类型(引用类型,只是做了一些优化看起来像基本类型)。(https://blog.csdn.net/weter_drop/article/details/94126057)
- HashMap介绍一下。
- JVM是什么。
- GC介绍一下。
Android:
- 四大组件是什么:Activity、Service、BroadCast、ContentProvider。
- 四种启动模式:Standard、SingleTop、SingleTask、SingleInstance。
- fragment生命周期说一下,怎么使用。
- 进程和线程的关系。
- 一个app有几个进程(一般来说是一个,需要多个的话要指定)
- 线程间通信:我说了handler。其他的还有AsyncTask。java中的线程通信有wait()、notify()、condition等。
- 什么是ANR?
- 列表页可以用什么实现(ListView、RecyclerView)。
- ListView与LinearLayout区别:ListView对item做了缓存。
- 如何判定不同的item类型?(有一个itemType变量可以判断)。
- 一个ListView有100个item,怎么确定ListView的高度(不会,我说了100*item高度)。(https://my.oschina.net/u/1377657/blog/349847)
- 如何使ImageVIew中的图片居中铺满(记得有一个属性ImageView.ScaleType来设置缩放和居中,铺满应该需要自己去测量宽高进行平铺)。
- dp与dpi区别,怎么把dp和像素进行转换(忘了,一些数学公式吧)。(http://www.apkbus.com/blog-912299-77784.html)
- 用过哪些第三方开源框架(OkHttp、Glide).
- Gradle了解不?
- 架构用的是什么:说了一下MVC、MVP、MVVM。自己的项目是mvc。可以改进为MVVM。
- 项目中的微信登录是怎么实现的。(看微信api接入文档,创建对应的activity,注册,对uid进行一些识别。其他的忘了需要再看看)。
网络协议:http与https区别(多了一层SSL:数据加密、身份认证、数据完整性)
4.16 三面
- 自我介绍、说了一些项目、实习
- 面试官介绍部门、部门氛围之类的