狗狗onsite android

今天面的,觉得心凉。有鉴于地理很少有android google的面经,所以出来发,希望之后地理能有多一点的android的面经。
1.专门问android,可以分别解释一下 Task , Activity, Application 吗?先叫你写出一个activity life cycle的顺序 然后再问你A activity正在执然后启动惹B activity,AB activity分别经历过了什么 ? 然后 例如 A activity 启动 B activity , 那A被onDestroy叫了吗?然后在 B按 back button 回到 A , 那 B 被 Destroy 了吗?假如我只有一个 MainActivity, back stack 裡面没有东西 , 按backbutton 会叫onDestroy 吗? 那background会叫onDestroy吗?哪时候你会需要override onBackPressed() 方法 ?哪个android default的system 有override onBackPressed ? ==> 他说Android Home page …… gmail app 你在写 email 时候 ,你会怎么改写 onBackPressed() 方法 ? 我就说显示一个AlertDialog,他就说为啥不用toast, 我就说也行,他就说AlertDialog不会有问题吗? 反正他坚持一定要toast ……Service 的生命週期Service 要如何跟呼其他东西沟通 ? 假如不用bindService呢 ? 要用什么跟service沟通?Service 在进行中,假如连需呼叫呼叫startService 三次 , onStartCommand 会被执行几次ANR 可能原因? 不再ui thread上要更新ui ==> 要如何解决 我提出了 Thread, HandlerThread, AsyncTask 之后接着问AsyncTask 裡面 哪些方法是在 ui thread 哪些事background thread
==> 吐槽,android 官网明明就有说 onStop会有直接去onCreate的时候,我照写,面试官就说,你确定? onDestroy 会被叫吧? 我说,应该没有, 他说,没 应该会叫的,我就只能默默屈服在他的淫威之下惹,默默的擦掉那条onCreate的线,把它连到 onDestroy2.android 与算法 android: 什么事process ? 如何start a process ? 如何进行 IPC ? 有哪几种方法? Service 会不会造成 ANR ? 怎么解决 ? 算法: 你有一个class Node, 请implement 裡面的 一个方法 call addChild(Node child) class Node{ public void addChild(Node node){ } } 然后,当addChild时, 产生了不是tree的时候 throw exception,不然就正常加ex A.addChild(B) then B.addChild(A) ==> throw exception A.addChild(B) , A.addChild© then B.addChild© ==> throw exception 还有很多情况, 反正当addChild之后,产生不是tree的情况就 throw exception,不然就正常加
==> 吐槽,面试官不知道intentService,我说IntentService是有自己的worker thread,他表示 真?我说100%确定,然后他自己就用手机默默查惹。
3.纯算法 你给你一组 int array 有正有负, 还有 目标数 targetNum, 可使用的运算符 + - * / 与括号 ,裡面 int array 裡面的只能用一次,只要返回任一解即可。 public String findSolution(int[] numbers, int targetNum)ex [1,2,3,8,4] target 44 ==> (3+8)4 == 44ex [2,3,4,1,9,2] target 21 ==> 3+ 29 = 21
4.纯算法 算是 322. Coin Change 变形,但是难很多给你一组input int array 代表硬币面额,均正数,给你个目标数 targetNum,在能换出targetNum的情况下,请返回一个 int[] ,裡面代表着input array裡面对应到的硬币的次数, 硬币总数要最小值。 此答案 int[] 要适用于 1 ~ targetNum
要适用1 ~ targetNum 是指如下[1,2,3,4] target 3 1 2 3 41 1 0 0 02 2 0 0 0 ==> 不能是 0 1 0 0 因为假如你只有 一个 2 的话,别人假如要1,你就换不了给别人3 3 0 0 0 或者 2 1 0 0 都行 或者 2 0 1 0因为他们都能兑换 1 2 3 , 而且你都只有3个硬币, 无法用2个硬币达成
5.android 与算法 看了我的简历有用Rxjava,简单问我都怎样用Rxjava? 我就说 bifunction rxjava 合併两个api call 他就说假如你不要用Rxjava呢? 要如何用实现 ?
给你两个List<List> 叫你做单位换算 List 1USD , YEN, 0.2 ==> means USD * 0.2 = YENYEN , EUR, 2.0AUS , USD 3.2
List 2USD EURAUS EUR
所以base on List 2 要求你给出换算率所以你返回的答案是 List4 因为 0.2 *21.28 因为 3.2*0.2*2

很屌 祝楼主offer多多

感觉第三轮是不是可以转化为一个图论题:
每一个node是一个state, 比如target = 5, coins = [1, 2, 3, 4] 就有5个node {1,2,3,4,5}
如果一个state能到另一个state就draw one edge, 比如因为有面值为4的货币所以draw an edge from 1 to 5
建完图之后就是找shortest path visited all nodes in graph 参考 https://leetcode.com/problems/shortest-path-visiting-all-nodes/description/

补充内容 (2018-9-27 12:34):
说错了是第四轮

不知道欸,当时跟面试官讨论没有讨论到图欸,你可以写看看

感觉我会问kotlin题目喔

感觉你的题目是所有mobile面经里最难的

恩…我之前也有同事去面google,我跟他讨论,他听到我题目就吓尿惹

哈哈 我也会选择吓尿

请问lz拿到offer了吗

之後有補onsite ,都有答出來,但是還過不了hc