zoukankan      html  css  js  c++  java
  • jujin for android

    面试问题

    关于人文方面的问题

    • 先介绍一下你自己?
    • 你有什么兴趣爱好?
    • 你平常空闲时间会干什么,看哪些书,有什么心得体会?
    • 如果面试过了的话,就会问你的期望薪资,然后就开始各种压榨你。

    关于 Java 方面的问到的知识点

    • 面向对象的三大特性,如何理解其中的多态?
    • JVM 的内存模型?
    • String、StringBuilder、StringBuffer 的区别,StringBuffer 是如何实现线程安全的?
    • 了解过 HTTP 吗?说说它的特点,它里面有哪些方法,有了解过吗?知道 HTTPS 吗?这两者有什么区别?
    • 你平常是怎么进行加密的?MD5 加密是可逆的吗?
    • 接口与抽象类的区别?static 方法可以被覆盖吗?为什么?
    • 创建线程的方式,他们有什么区别?知道线程池吗?说说对线程池的理解?
    • 你了解过 Java 的四种引用吗?分别代表什么含义,他们有什么区别?
    • Java 中关于 equals 和 hashcode 的理解?
    • 关于 Java 中深拷贝和浅拷贝的区别?
    • 简单的说下 Java 的垃圾回收?
    • 了解过 Java 的集合吗?说说 HashMap 的底层实现原理?ArrayList 和 LinkedList 的区别?Java 集合中哪些是线程安全的?
    • 如何实现对象的排序?
    • 知道 ThreadLocal 吗?说说对它的理解?
    • 在你写代码的过程中有使用过设计模式吗?你知道哪些?为什么要这样用,能解决什么问题?
    • 了解注解吗?了解反射吗?为什么要使用反射?
    • 数据结构中常用排序算法?

    以上就是关于 Java 所问道的知识点,记得不是太清楚了,待补充。。。

    关于 Android 方面的问到的知识点

    • Activity 的生命周期是什么? onPause 和 onStop 有什么区别?
    • Android 五种布局的性能对比?
    • Android 四大组件是什么?分别说说对它们的理解?
    • 关于 Service 的理解?它的启动方式有什么区别?
    • 了解 fragment 吗?说说你对它的理解?
    • 自定义过 view 吗?它的步骤是什么?说说你自定义 view 过程中出现的问题,以及是如何解决的?
    • 刷新 view 的几种方式,他们有什么区别?
    • Android 实现数据存储的几种方式?
    • 如何实现 Android 中的缓存的,通过使用第三方库和自定义来分别说明一下缓存技术的实现?
    • 如何实现 Activity 与 fragment 的通信?
    • Android 5.0、6.0、7.0 新特性?
    • Android 中的动画分类?
    • 你以前是如何进行屏幕适配的?
    • 说说 Activity 创建过程?
    • Android 中如何与 JS 交互的?
    • 了解 APP 的启动流程?
    • 你知道哪些图片加载库?他们有什么区别?ImageLoader 的内部缓存机制是什么?是如何实现的?
    • Android 中是如何实现异步通信的?
    • 说说 Handler 内部实现原理?
    • 使用过 AsyncTask 吗?说说它的内部实现原理?它有什么缺陷?如何改进?
    • 知道 JNI、Binder 吗?说说你对它们的理解?
    • 如何实现进程间的通信?
    • 说说 Android view 和 viewGroup 的事件分发机制?
    • 你开发过程中使用到了哪些第三方库?了解过他们的源码吗?
    • 你了解广播吗?它与 EventBus 有什么区别?能互相实现吗?
    • 你们网络请求是如何实现的?知道 Volley 吗?内部实现流程是什么?它与 OKHttp 有什么区别?
    • 你了解哪些第三方功能?知道推送吗?它的原理是什么?
    • 接触过 MVP 模式吗?说说看对它的认识?
    • 知道 Android 中的多渠道打包吗?
    • Android 签名机制的原理?反编译解压后的文件夹所包含的内容有哪些?
    • 你了解过模块化、组件化开发吗?
    • 开始开发 APP 如何进行架构?
    • APP 工程模块是如何划分的?你是如何进行封装的?
    • APP 是如何进行优化的?知道 OOM 吗?如何解决内存泄漏?

    第一面

    1 手写算法题。一共有3个,面试官随机选择一个。猫扑素数;1到n,求1的个数;单词反转。
    2 Activity的加载模式。
    standard,singleTop,singleTask,singleInstance。
    可以参考:https://developer.android.com/guide/components/tasks-and-back-stack.html
    2.1 什么时候会用到singleTask?
    在MainActivity的时候用到
    3 Handler机制?
    MessageQueue,Looper等。
    3.1 一个线程是否只有一个Looper?
    3.2 如何保证一个线程只有一个Looper?
    参考:ThreadLocal
    4 多线程的方式有哪些?
    1) new Thread()
    2) AsyncTask
    3) Handler
    4) IntentService
    5) ThreadPoolExecutor
    5 ANR异常发生条件
    1)5s内没有响应用户输入事件
    2)10s内广播接收器没有处理完毕
    3)20s内服务没有处理完毕
    5.1 如何分析ANR
    log+trace.txt
    6自定义View和ViewGroup
    说一下自己定义的组件就行
    7 事件处理
    分发,拦截,处理。只是View没有拦截处理
    8 GC算法
    标记清除,标记整理,复制,分代收集
    参考:http://www.jianshu.com/p/7c708a66ff42
    把上面文章弄懂了,就能刷过GC
    9 四大引用
    强,软,弱,虚,并说明下合适GC
    10 动画
    View动画,属性动画,帧动画。再说下View和属性动画区别。
    参考:https://developer.android.com/guide/topics/graphics/overview.html
    11 Dalvik和Art区别?(Just In Time和Ahead Of Time)

    就这样第一面基本结束。一共问了11个问题,其中美团的手写算法在业界算是比较出名,很多小伙伴可能卡在手写算法上。然后就是一些Android和Java的细节性东西,这些基础内容只要有1年经验的都基本能说出个一二三。

    大概过了10分钟,接下来是

    第二面

    1 OkHttp原理?
    2 Retrofit原理?为何用代理?代理的作用是什么?
    3 ButterKnife原理?用到反射吗?为什么?
    4 ANR异常如何查找并分析?
    5 JVM内存模型?性能调优?
    6 垃圾搜集算法有哪些?G1算法?
    7 Http和Https的区别?
    1)Https是ssl加密传输,Http是明文传输
    2)Https是使用端口443,而Http使用80
    3)HttpsSSL+HTTP协议构建的可进行加密传输、身份认证的网络协议要比Http协议安全
    4)Https协议需要到CA申请证书
    8 加密算法有哪些?对称加密和非对称加密的区别?
    MD5,SHA1,Base64,RSA,AES,DES
    对称:使用相同密钥,需要在网络传输,安全性不高。
    非对称:使用一对密钥,公钥和私钥,私钥不在网络传输,因此安全性高。
    9 TCP的三次握手?两次行不行?为什么?TCP攻击知道吗?如何进行攻击?
    10 内存优化如何做?
    11 看过那些源码?
    12 会对代码进行review吗?何时review?怎么review?
    13 项目中遇到的让你棘手的问题?多久解决,怎么解决?(考的是你发现问题和解决问题的能力)
    14 如何学习?何时学习?怎么学习?学习渠道?(考的是学习能力)
    就这样,第二面结束了。可以看出,第二面的难度会比第一面大一点,但是还好,基本都是常用的内容,深度会偏向原理性质。这就说明在平时的编码过程中,需要多多思考,多看源码实现方式,而不要一味着去写代码。程序员会写代码,但不要做一个只会写代码的程序员。我们的思维方式是不可替代的。

    大概过了10分钟,开始进行第三面面试:

    第三面

    1 前几次面试感觉如何?
    2 你现在的APP日活是多少?
    3 你现在如何处理崩溃日志?
    4 你觉得小团队好还是大团队好?(这个问题不能直接回答好和不好,不然掉坑里了)
    5 你的优点和缺点说下?
    6 你的发展方向说下?是先讲究宽度还是讲究深度,为什么?
    7 为什么离职?
    8 其他小问题,如哪里人啊?现在工资怎样?要求如何,何时到岗啊?有什么问题要问我的吗?
    就这样,第三面结束了。可以看出,第三面面试官不会考察你的知识细节,而是问一些形而上的知识。他是从整体方向上去把握面试者,往往最后一个面试官对你起到决定性作用。当然,能见到最后一面面试官,说明你前两面都已经过了。

    总结

    这次面试感觉还不错,美团的开发同学待人方面很随和。很喜欢这种氛围。结果不重要,重要的是过程。只要你有实力,就别担心。如果不好好学习,就算背了面试题,又能如何?一样会在面试中PASS。所以说,平时写代码的时候需要多多思考,不一定用到才去Google,对于一些新的技术,要不断追求同时别忘记了基础很重要,基础,基础,基础,重要的事说3遍。
    在接下来的学习和工作中,需要学习继续探索以下问题。
    1 Java基础知识。线程,java虚拟机,内存模型等。
    2 Android基础知识。官方API,常用控件源码,自定义控件,动画,性能分析等。
    3 app层面:第三方开源框架(okHttp,Retrofit,ButterKnife),热修复技术(Andfix,Robust,Tinker等),崩溃处理,日志处理,内存溢出内存泄漏定位等。
    4 网络基础:TCP/IP,Http/Https,UDP,七层网络协议等等。
    5 沟通能力和相处能力,这是软实力。非常关键,如果你技术很好,但是相处起来很困难,我想面试官也不太愿意招你。

    最后,向您请教一个问题呗?您是如何学习的?如何对知识进行管理和规划?如何善用记忆七天遗忘曲线?如何对碎片化的时间进行管理?这个问题是我一直在黑暗中摸索的问题,希望大家踊跃留言?一起进步!

  • 相关阅读:
    Python异常处理
    Python 线程、进程和协程
    python版本升级及pip部署方法
    Python socket编程
    循环遍历方法笔记
    TCP/IP协议分为哪四层,具体作用是什么。
    Python Paramiko模块与MySQL数据库操作
    Python面向对象编程(二)
    h5专题常用小代码
    sethc问题
  • 原文地址:https://www.cnblogs.com/banzhuan/p/6820490.html
Copyright © 2011-2022 走看看