美文网首页Android
2019年Android实习面试汇总

2019年Android实习面试汇总

作者: Hengtao24 | 来源:发表于2019-11-27 13:51 被阅读0次

    系列文章

    1. 2019年Android实习面试汇总
    2. 2019年Android校招面试总结
    3. 2019Android阿里&腾讯&百度&字节&美团&网易&爱奇艺校招面试汇总

    基本情况

    • 2019届东南大学(南京市)生物医学工程(医学电子学)专业七年制,非科班,Android客户端方向
    • 接触Android是因为参加电子设计比赛,还有课程设计项目需要
    • 此贴主要是2019年年初春招实习的面试总结,最后去了华为实习,后续会再贴上秋招面试总结
    • 主要包括阿里2面,腾讯4面,字节3面,爱奇艺3面,网易游戏3面,华为2面

    阿里

    阿里简历面(阿里笔试做的比较差) 50min

    自我介绍

    • Android学习方式
    • 对源码是否了解(Android Java)

    源码

    • Handler消息机制(具体涉及到的类 & 细节)
    • HashMap(数据结构 & put操作
    • HashMap扩容时间复杂度
    • ArrayMap

    JVM

    • Java内存区域
    • 堆栈区别
    • 哪些区域线程私有,哪些共享
    • 栈帧
    • 方法调用时的入栈出栈操作

    Java

    • 并发访问:
    1. volatile(只保证了可见性和有序性,不能保证原子性)
    2. synchronized:修饰代码块/方法/对象的区别? (单例模式DCL会不会失效?)
    3. Lock

    Android

    • Activity生命周期(具体执行,涉及到哪些类?)
    • ANR(什么是ANR?怎么监测,运行前,运行后,线上监测?)

    项目

    • 项目线程同步的优化(session/cooike/token/上传凭证的区别)

    阿里一面 1h (挂)

    自我介绍

    项目

    • 使用人数/有无上架商店
    • 有无IM通讯模块
    • 登录模块是怎么解决的
    • 如何优化千万级别用户下让用户实时知道自己状态(APP端 & 服务器端)

    Java

    • synchronized修饰方法和类有什么区别
    • volatile关键字作用

    JVM

    • 内存分配
    • 垃圾回收算法

    Android

    • 事件分发机制
    • 消息机制
    • View绘制流程(具体原理,包括不限于绘制三大流程)
    • Handler(怎么实现多线程?为什么Looper死循环没事?怎么实现线程间通讯?)
    • 操作系统层面死循环是怎么回事?
    • 死循环一定会导致ANR麽?

    HTTP协议

    • HTTP缓存了解不?

    腾讯

    提前批一面 50min

    Android

    • 四大组件是什么?轮番介绍之
    • Fragment是什么?与Activity区别?
    • SurfaceView与View区别?SurfaceView原理?
    • 前台服务与后台服务区别?
    • AIDL了解么?
    • IPC方式?谁最快?
    • Protocol Buffer了解么?
    • APP中多进程有什么用?
    • 方法数65536怎么解决?
    • View显示过程?

    Java

    • 线程同步方式?
    • 死锁是什么?

    虚拟机

    • 内存分配方式?
    • 堆和栈的区别?
    • GC?垃圾回收?
    • class文件生成过程?

    计算机网络

    • 什么是HTTP?
    • HTTP/HTTPS区别?
    • TCP/IP 三次握手 四次挥手?
    • TCP/UDP区别?
    • HTTP是长连接还是短连接?
    • HTTP状态码?
    • 抓包工具?怎么抓包HTTPS?

    设计模式

    • 生产者,消费者是什么?
    • 命令模式是什么?

    数据结构

    • 快排是什么?时间复杂度多少?
    • 七大排序分别是什么?
    • 二叉树原理?
    • 红黑树是什么?

    提前批二面 30min (挂)

    C++

    • class与struct区别(看到我相关课程上写了C++,就开始问我C++,我说C++基本没怎么用过,才开始问我Java)

    项目

    • 介绍项目,有什么难点?
    • 竞赛用了单片机? 指令级是什么?

    Java

    • HashMap介绍下?
    • ArrayList,LinkedList用法有什么要注意的
    • 注解介绍下?
    • 泛型中类型擦除?

    数据结构

    • 线段树 B+树?

    Android

    • OkHttp了解不?
    • OkHttp使用需要注意什么?
    • RxJava介绍下?
    • Activity四种启动模式?
    • 一个APP 怎么退出所有Activity?
    • 接上问如果有第三方SDK,怎么退出?

    正式批一面 40min

    手写代码

    • 字符串出现频率中位数
    • 最长公共子串问题LCS

    项目

    • OKHTTP框架
    • TCP UDP HTTP区别
    • TCP滑动窗口
    • 用UDP实现TCP

    数据库

    • 三大范式
    • 索引
    • 怎么知道命中索引

    操作系统

    • 进程间通讯方式
    • 共享内存原理

    正式批二面 35min (挂)

    项目

    • 内存泄漏?

    Android

    • OKHTTP 对HTTP与HTTPs之间的区别
    • HTTPs加密原理
    • BlueboothAdapter
    • Activity在AndroidManifest.xml文件中有哪些标志位?
    • CLEAR_TOP?
    • singleTop和singleTask分别的使用场景
    • Android存储(文件,SP,数据库[具体介绍下SQLite])

    JVM

    • Android虚拟机与Java虚拟机之间区别

    Java

    • 深拷贝 浅拷贝(内存溢出or垃圾回收时有什么区别?)
    • 多线程模型

    数据结构

    • 二叉树
    • B树(插入/删除过程

    字节跳动

    字节一面 1h

    项目

    • 介绍项目
    • HTTPs加密的解释
    • 对称/非对称加密

    Java

    • 深拷贝/浅拷贝,怎么实现深-浅拷贝 CopyonWrite
    • Java内存(分配->回收)

    网络通信

    • TCP挥手 第三次不挥手会怎么样

    算法

    • 数组A 数组B 计算A-B
    • 0-n之间所有质数(先求所有合数)

    字节二面 1.5h

    Java

    • 线程同步问题(为什么需要同步&怎么实现同步)

    设计模式

    • 单例模式(静态内部类)
    • 其他设计模式简介

    数据结构

    • 排序算法
    • 归并/快排(实现原理/平均复杂度/能否提前结束/谁性能更优)
    • 堆排(怎么实现调整堆结构/k个最大的数)

    算法题

    • 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组

    字节三面 40min (挂)

    自我介绍

    • 专业课程
    • 看过哪些书

    操作系统

    • 内存分配区域(Java层面回答?对象引用在堆和栈都有么?函数内部new的对象存放在哪?)
    • 用户态/内核态
    • 中断

    计算机网络

    • 计算机网络有哪几层?分别对应什么协议?
    • IP TCP传输的都是什么数据?
    • DNS?

    Java

    • 泛型上界,下界定义/作用
    • Java有哪几种锁
    • 临界区概念
    • synchronized和可重入锁的区别

    爱奇艺

    爱奇艺一面 50min

    项目

    • 主要介绍了实习项目,分析了内存泄漏,线程同步的问题

    计算机网络

    • HTTP/HTTPS区别

    Android

    • OkHttp框架(里面有那些设计模式)
    • 如何终止一个线程

    爱奇艺二面 50min

    介绍项目

    • 内存泄漏的来源
    • 有没有做过优化

    Android

    • Service的两种启动方式?区别在哪?
    • 性能优化有没有做过?

    Java

    • 手写单例模式

    算法

    • 删除链表中一个节点

    爱奇艺三面 40min

    自我介绍

    • 项目
    • 有没有特别擅长的

    Java

    • public作用?
    • .java文件名怎么确定?
    • 外部类最多有几个?
    • 内部类最多有几个?
    • 内部类支持嵌套么?
    • 线程池怎么给新建的线程设置名字?
    • 线程池种类?
    • 注解的使用?

    Android

    • Activity的启动模式下生命周期
    • Activity A->B的生命周期
    • Handler中怎么实现Looper和线程绑定?
    • 一个线程最多有几个Looper?
    • 多个Looper报的异常?
    • 消息阻塞再次唤醒是什么机制?
    • ThreadLocal是什么?

    网易

    网易一面 15min

    Android

    • OkHttp
    • Retrofit
    • RxJava

    网易二面 15min

    Android

    • OkHttp
    • Retrofit
    • RxJava

    算法

    • 斐波那契数列

    网易HR面 15min

    聊天

    • 怎么学习Android
    • 专业
    • 为什么不进医疗仪器行业

    个人

    • 城市选择
    • 家庭情况

    业务

    • CC直播部门
    • 先做培训和功能迭代
    • 网易游戏的生态链一环 & 技术实力尚可

    华为

    华为一面

    项目

    • 实习项目
    • 可优化的地方
    • 专业

    算法

    • 复盘笔试题

    华为二面

    • 聊人生
    • 对华为文化看法
    • 家庭情况
    • 专业情况

    总结

    实习拿了华为,爱奇艺,网易游戏的offer,最终去了华为南研所,Android客户端的面试知识点涉及到Android,Java,计算机网络,数据结构,操作系统,设计模式...

    Android

    • 四大组件使用及原理,View原理,动画,常用开源库(OKHttp,Retrofit,RxJava,EventBus,Glide,Gson...),Handler,Fragment...

    Java

    • Java基础知识,反射,泛型,集合源码,多线程原理,JVM...

    计算机网络

    • HTTP/HTTPs/TCP/UDP/DNS/IP...

    操作系统

    • 中断,用户态/内核态,阻塞,临界区,多线程模型...

    数据结构

    • 二叉树,红黑树,B树,B+树,排序算法...

    设计模式

    • 单例(手写),观察者,建造者,命令模式...

    建议

    • 主要针对非科班同学:最好系统的看下操作系统和计算机组成原理,推荐清华大学陈渝的操作系统公开课,因为看完操作系统后才能系统的认识计算机的原理,能更好的从底层去认识上层
    • 多看源码,包括Java层的代码在JVM中的实现源码(如synchronized的实现源码),Android Framework的源码(更好认识Android层的实现),Android开源库源码(OKHttp,Retrofit,RxJava,EventBus,Glide,Gson...,更好的学习优秀开源库源码,做到用的熟,懂原理)
    • 多问自己为什么,比如两个技术点优缺点分别在哪,各自的使用场景(如单例模式下饿汉与懒汉的优缺点,使用场景),这样才能更契合实际应用开发,针对不同场景使用不同技术点
    • 及时复盘总结面试中遇到的问题,分为两方面,一是知道但不能深入的,这种需要继续多看多总结,另一种是没接触过的,这种可以先了解下,万一面试又遇到了,可以回答下了解到的,之后再去深入总结(毕竟时间有限,不可能面面俱到,只能不断学习总结)

    相关文章

      网友评论

        本文标题:2019年Android实习面试汇总

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