找暑假实习生那些事

来源:互联网 发布:nike回到未来价格知乎 编辑:程序博客网 时间:2024/04/30 03:42

大三学生一枚,在找Android实习。接到过一个公司的几次电话面试。下面记录下面试过程中被问到的一些问题。

三次面试
一、基础知识
第一次面试,面试官主要问的是计算机基础知识。
1. 常见的排序算法有哪些?快速排序的实现原理
2. List与Set的区别
3. 二叉树是什么?如何遍历,各自的区别
3. 计算机网络中的七层,http属于哪一层?
4. http和https的区别?
5. Java中的类加载机制。
5. 说一下Java和Android的虚拟机。
6. 知道dex文件吗,说一下他和class文件的区别。
7. 英语水平如何?

二、项目经历
第二次面试,主要问项目经历和学习经历。
1. 最难忘记的项目经历
2. 说下项目的架构和功能
3. 项目中开发过程遇到的难题与解决方法
4. Activity的生命周期和横竖屏切换的生命周期

三、项目架构
第三次面试问得比较偏技术。
1. 说下你的项目架构(直接懵比,是说mvp还是RxJava+Retrofit+okHttp3???后面转移了话题)
2. 网络框架的实现原理(如果没网如何处理?将请求存下,等到网络环境好的时候在进行请求(类似QQ消息的重发))
3. ImageLoader的实现机制(如何解决的oom和缓存问题)
4. Handler消息机制
5. 事件分发机制
6. 自定义控件的原理
7. RecyclerView的源码,说出为什么他比ListView要好
8. 内存泄漏和应对方式(当时说如何解决,使用弱引用)
9. Android中的GC
10. Android中的热修复
11. Activity的启动过程(源码理解)
11. 说一下Android 中的JNI和NDK(没用过,直接放弃)
12. 用过哪些开源框架。

期间还接到过一家公司的电话,一上来就是“以最短时间,讲一下你项目中的亮点”。因为,项目不是商业级的而是一些在学校参加学科竞赛开发的。当时开发的时候比较随意,没有在意架构。后期又没有做重构。所以没太大亮点,随便说了下,直接就GG了。。。

总结:笔试过不了,内推才是王道。仍然在找实习的道路上趴着。。。待续


———————– 2017-5-20—————————-

第四次
1. 简单介绍下自己
2. Activity的生命周期
3. 项目中的架构
4. 项目中担任的角色
5. 如何协调团队成员工作
6. IPC的几种方式
7. 对于sqlite的理解
8. 四大组件是什么
9. service的应用常用的场景
10. 两种广播区别与他们的使用场景
11. 对网络框架的理解,开源库与自己封装的区别
12. EventBus的底层实现
13. ArrayList和LinktList的区别与底层实现
14. HashMap与LinktedMap的底层实现与区别
15. 手写字符串反转
16. 手写线程安全的单例模式

———————– 2017-5-26—————————-
第五次
介绍下自己:

  1. mvc 、mvp和mvvm的区别与联系?
  2. Android的内存分配
  3. RXJava响应式编程以及进程调度的原理
  4. 快速排序的原理和时间复杂度,以及最快的时间复杂度和最慢的
  5. 有没有阅读过github上的一些开源库源码
  6. 最拿手的项目
  7. 是否有过Android逆向的开发经验(找Android逆向工程师)

———————– 2017-7-31—————————-
Java

  1. final修饰符用法
  2. static修饰符用法
  3. static修饰的内部类会有外部内的引用吗?不会
  4. Java中的修饰符的区别
  5. Thread中的run方法和start方法区别?

网络

  1. url的格式?模式(或称协议)、服务器名称(或IP地址)、路径和文件名
  2. url的参数形式?键值对的形式:?参数=值
  3. Get与Post的区别:安全性和数据量。GET方式提交的数据最多只能是1024字节,理论上POST没有限制,可传较大量的数据
  4. tcp与udp区别
  5. tcp的三次握手和四次挥手:三次握手和四次挥手
  6. http的heander和Content/type以及常见的返回码:状态码 、Content类型

Android

  1. assert包和res包的区别?assert不会被编译进R文件
  2. weight属性
  3. 自定义View需要重写的三个方法
  4. SpecMeasure的两个属性:类型和尺寸
  5. selector文件的使用
  6. 在TextView四个方向设置drawable的属性,设置文本每个文字颜色变化(使用SpannableString)。
  7. Handler在子线程创建?创建Looper,Looper.prepare() Looper.loop()
  8. Android中内存泄漏的常见:static修饰Context
  9. Handler的内存泄漏: Handler内存泄漏详解及其解决方案

———————– 2017-8-05—————————-
Java

  1. 进程与线程的区别(作死)
  2. 线程可以使用哪些内存???
  3. 泛型的类型反射如何获取?

Android

  1. Application的生命周期
  2. Fragment的生命周期
  3. 当Activity已经启动的时候,再启动Fragment,OnCreatActivity会执行吗?
  4. Activity的任务栈
  5. Activity的启动模式是singleTop时,而且Activity位于顶部,这时候传入的数据不同,如何让Activity改变?
  6. 当前应用切到后台,由于内存不足把已存在Activity释放掉了,再次回去的时候生命周期如何调用,如何恢复数据?saveInstant。
  7. 事件分发机制
  8. ViewGroup的测量,当父控件高度是wrap_content,子控件高度是match_parent的时候,高度是怎样的?

怎么实现微信?

  1. 在线的时候,双方接受发送消息怎么处理
  2. 离线的时候怎么处理
  3. 网络不好的时候如何发消息?消息是否序列化到本地
  4. 对方头像改变的时候如何处理?让自己知道

其他?

  1. 有没有自己崇拜的偶像?
  2. 你觉得最好的程序员应该怎样?
  3. 你自己的优势?

———————– 2017-8-7—————————-

  1. 自我介绍
  2. 项目中的难点
  3. 内存泄漏如何检测?leakcanary的原理
  4. 手写链表的几个增删查改
1 0
原创粉丝点击