天天点外卖,于是决定我跑去了饿了吗。。

面试过程:

通过boss直聘网站找相应的职位,找到就申请了。
过了2天来电话了,是一个周六的早晨9点钟。
电话面试问了 java基础,redis,jdk,spring原理,mybatis,dubbo;
后来让我去现场面,问了java内存相关,redis内存相关,最擅长的技术领域。。

电话面试的期间,面试官很有耐心的听我讲也不会突然打断我的思路(感觉很舒适)。
现场面试不得不说大厂还是大厂,就挺气派的。公司看起来一切都是尽然有序。

面试官问的面试题:

技术人员一面

  • 对于进程中锁的理解。
  • 解决死锁的方法
  • 网络的7层结构
  • TCP/UDP的不同
  • 三次握手
  • 给定一个URL,如何访问
  • 栈和队列的区别
  • 链表,双向链表。

架构师二面

Java的war文件和jar文件有什么不同,war文件是怎么出现的
int 和 Integer 有什么区别,在这里问了很多,比如用什么比较才会给true的结果
Java里有哪些集合,后续又问了set和list的区别以及优缺点,还有tree
Java的内存结构,主要问堆和栈还有线程的数据是怎么在堆和栈里存储的,栈的生存周期啥的

一、Activity的生命周期及描述;

这个问题都小儿科了,只要你记住那几个方法,知道每个方法的作用就ok了。

二、MVC的作用及描述:

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范;
Model(模型)表示应用程序核心(比如数据库记录列表)。
View(视图)显示数据(数据库记录)。
Controller(控制器)处理输入(写入数据库记录)。优点:耦合性低、重用性高

三、ANR是什么?如果出现ANR,你会怎么处理?

说真的,做android的应该知道ANR这个术语,可面试的时候当时我就大脑一片空白,完全没搜索出来,后来面试人员一提示,立马想起来了;我的回答是:是操作程序占用时间过长或者主线程被阻塞引起的ANR,解决办法是把占用时间长的操作进行多线程处理或者进行异步操作处理,本人觉得还是基本正确的,至少是面试官希望听到的结果,下边呈现技术大牛们的详细解释。
在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不能出现anr,而让用户每次都要处理这个对话框。因此,在程序里对响应性能的设计很重要,这样系统不会显示ANR给用户。
默认情况下,在android中Activity的最长执行时间是5秒,BroadcastReceiver的最长执行时间则是10秒。

ANR的常见类型

ANR一般有三种类型:

  • KeyDispatchTimeout(5 seconds) --主要类型
    按键或触摸事件在特定时间内无响应
  • BroadcastTimeout(10 seconds)
    BroadcastReceiver在特定时间内无法处理完成
  • ServiceTimeout(20 seconds) --小概率类型
    Service在特定的时间内无法处理完成

三:KeyDispatchTimeout

A key or touch event was not dispatched within the specified time(按键或触摸事件在特定时间内无响应)
具体的超时时间的定义在framework下的ActivityManagerService.java

为什么会超时呢?
超时时间的计数一般是从按键分发给app开始。超时的原因一般有两种:

  • 当前的事件没有机会得到处理(即UI线程正在处理前一个事件,没有及时的完成或者looper被某种原因阻塞住了)
  • 当前的事件正在处理,但没有及时完成

如何避免KeyDispatchTimeout

  • :UI线程尽量只做跟UI相关的工作
  • :耗时的工作(比如数据库操作,I/O,连接网络或者别的有可能阻碍UI线程的操作)把它放入单独的线程处理
  • :尽量用Handler来处理UIthread和别的thread之间的交互

说了那么多的UI线程,那么哪些属于UI线程呢?
UI线程主要包括如下: Activity:onCreate(), onResume(),
onDestroy(), onKeyDown(), onClick(),etc AsyncTask: onPreExecute(),
onProgressUpdate(), onPostExecute(), onCancel,etc Mainthread handler:
handleMessage(), post*(runnable r), etc

HR三面
简单自我介绍一下过往的经历和项目

  • 机器人每次向前走1步概率是1/2,每次向前走2步概率是1/2,当机器人走的路程是4的整数倍时候结束,求结束时机器人步数的期望
  • 老公接老婆下班,老公6:20—6:30到,老婆6:25—6:30下办公楼,如果老公到老婆办公楼下比老婆晚,就会挨打,求老公挨打概率。

最后

针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。
下面的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2020收集的一些大厂的面试真题(都整理成文档,小部分截图),

最新整理面试题

最新整理电子书

最新整理大厂面试文档


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。一键三连哦!