面经系列(四)公司:FL科技,F社

前情提要

今年打算换工作,换工作免不了就要面试,面试的过程多种多样,但是我感觉这份经历对于广大程序员小伙伴们来讲应该是很有价值的,所以我将把自己的面试经历写出来分享给大家。

这部分内容应该是根据公司来进行分类的,但是出于敏感度问题,个人不会将具体的公司名称写在文章中,会以字母代替,本人坐标大连,Android开发,小伙伴可自行脑补。

招聘渠道及联系过程

Boss直聘平台
首先是公司HR要了一份简历。
第二天的早上在boss上留言希望电话沟通一下。由于我9点有会,所以在8点42分左右打了一个电话简单沟通了一下,主要的内容是:想要离职的原因,自己的技术(如:几年的Android经验,编程语言会不会kotlin,是否熟悉flutter等等)
然后是约了后天的下午下班前去面试。

面试当天的插曲
到了面试的当天,由于打车时间原因,稍微晚了大概三到五分钟,自己在boss上跟HR说了一下,但是应该是没有被看见。
不过后来到了公司发现,自己的这个面试预约HR那边没有记录,因为她那边还有两个问题想跟我确认,但是当时给我打电话的时候说的是见面去公司谈,后来她可能忘了,所以没有在boss上发面试邀约。
我发现,其实boss上如果你的简历里面有联系方式的话,很多HR都不会在boss上法面试邀约,而是会直接打电话给你邀请你面试。
不过F社的HR基本都是在Boss上发面试邀约,所以导致忘了晚上还有个人要来面试。
到了公司之后,我等了一会儿。然后有人通知会议室的大佬们现在有人来面试,过了三五分钟,会议室的人出来了。
我的面试也要正式开始了。

笔试

在面试之前,首先有一个笔试。

笔试过程是15分钟做10道智力题,个人印象比较深的是三道题:一个是数字填空,一个是去掉奇数位置数字问题,一个是最后一道逻辑题。

一、填数字问题
第一个填数字的问题,之所以没做出来,我个人认为并不是自己想不到或怎么样,而是题干的打印顺序具有迷惑性,导致你不知道前三个数和后三个数分别是一组数字。
题目大概类似与这样:

35,(36),17,18,(),6

填入括号中的数字。
个人在理解这个问题的时候并不知道前三个是一组,后三个是一组。而是把整个数列作为整体考虑。所以没有得到答案,如果知道前三个是一组后三个是一组的话,这道题就不难了,后面的答案应该是24

二、去掉奇数问题
去掉奇数的问题,这道问题挺有意思:

1-100,100个数字,每次去掉其中的奇数位置的数字,最后剩下的数字是什么?

这道题其实自己也是有思路的,但是受限于时间限制,所以当时没有办法验证。就没写答案。之前的面经里也说过,自己发现在笔试过程中的一大弱势就是自己做题速度太慢。可能是因为工作中养成的习惯,自己在得到答案之后总习惯于验证答案是否正确,这件事情非常消耗时间。相当于别人都不测试的问题,你需要去回顾与测试,直接增加了时间成本。
这道题的思路是:每次减少一半的元素,那么从100->0需要多少次?
过程应该是这样的:

100 -> 50 -> 25 -> 12 -> 6 -> 3 -> 1

需要进行六次减少元素的操作,那么最后剩下的元素其实就是倒数第二次的偶数位的第一个元素。
所以,我们每次只需要关注剩下的集合中的第二个元素是多少,就是下一次剩下的第一个元素。直到集合只剩一个元素。

1,2,3......100 // 开始状态
2,4,6,8......      // 第一次状态 ,剩余元素;50
4,8,12,16......    // 第二次状态,剩余元素:25
8,16,24,32...... // 第三次状态,剩余元素:12
16,32,48,64...... // 第四次状态,剩余元素:6
32,64,96 ...... // 第五次状态,剩余元素:3
64 	// 得到最终结果

这道题从推理到做出来,大概用不到五分钟,但是如果你是在时间限制的压力下做,5分钟就有一些难度了。

最后一道逻辑题,个人认为,不是很严谨,因为从数学上讲,必要条件不等于充要条件,但是最后一道逻辑题的正确选项里却把必要条件当成了充要条件。当然,也可能是自己审题不严导致理解错误,至少我目前为止并不认为自己的思路有问题。我当时感觉是没有正确答案。

面试

面试的题,说实在话,答得很烂,下面就跟大家娓娓道来。

  1. Activity的四种启动模式
    (这个算是老生长谈了,基本上面试都会问)
    但是这边问的比较深,会由这个问题衍生出其他问题。
  2. 如何直接通过startActivity来以类似SingleTask的方式启动一个非SingleTask的Activity?
  3. 说一说Android中事件的传递机制
  4. 事件传递机制中,onTouchEvent是向上冒泡的过程还是向下冒泡的过程?
  5. 说说Fragment的生命周期方法
  6. 自定义View时需要重写哪些方法
  7. 谈谈布局优化,用什么工具来优化布局?
  8. LinearLayout与RelativeLayout哪个布局在性能上更好?
  9. 谈一谈布局中的merge标签与ViewStub标签分别有什么作用?
  10. 之前使用什么方式实现的MVVM?是否用过LiveData?(现在应用层这一块,LiveData是一个常被问到的话题)
  11. DataBinding中的ViewModel要想实现双向绑定,需要继承哪个类?
  12. 是否了解Jetpack?使用过Jetpack中的哪些内容?
  13. 对于那种下一个请求需要依赖上一个请求的结果的问题,如何用更优雅的方式解决?(可能这个问题与kotlin的协程相关,但是很可惜,我没有用kotlin做过项目,所以不知道协程如何优雅的解决这类问题)
  14. 接上一题,如果让你设计一个类来接解决回调地狱问题,你打算怎么做?(这个问题自己回答的不好,如果再给我一次机会,我会这样答:对于那种必须串行执行的方法,采用任务队列的方式,将每次要执行的内容当做一个任务,每次要执行的任务都放在队列中,队列中前一个任务执行的结果会成为下一个任务执行的输入参数,最后得到结果。对于不需要串行执行的方法,则直接使用多线程,或者线程池,并行执行队列中的任务)
  15. bitmap的inBitmap这个参数是否了解?(具体的问题大概是这样,但是自己的描述可能有误,小伙伴们可自行查阅资料)
  16. 你是否见过内存泄漏?你知道有哪些内存泄漏的情况?(比较常见的就是dialog与handler)
  17. 为什么Google会推出DialogFragment并且建议用DialogFragment来代替Dialog?(这个问题应该是上一个问题的衍生问题,因为Dialog容易导致内存泄漏,Fragment有生命周期可以有效防止Dialog的内存泄漏)
  18. 如何防止图片过大导致oom?(这个问题也是网络上的热门题,基本以使用RGB_565这样的颜色显示方式,限制图片bitmap的宽高,压缩图片等方式)
  19. 现在用户有这样的需求:要查看一个地图式的图片,超级大图,即使使用上面说的方式优化,依然会占用很大内存,请问,有什么方式能够让用户能够正常查看大图,并且还非常流畅的对图片进行缩放?(这个题确实是真心不知道,面试时也没有回答出来)
  20. onSaveInstanceState方法的调用时机是什么?
  21. Activity销毁时是否一定会调用onDestroy?
  22. Fragment是否熟悉?如果一个Activity中包含两个Fragment,在这个Activity被销毁之后,再恢复的过程中,Fragment是否需要重新调用onCreateView?如何保证页面恢复之后,显示的还是页面销毁之前的Fragment而不是另一个?
  23. 说说如何在Android中进行多渠道打包?(这个之前自己研究过,所以答得还可以,主要就是通过gradle中的flavor和buildType进行组合,最后打出包的数量 = flavor * buildType)
  24. 了解Android中的依赖注入么?(自己说了Dagger,但是实际上现在Android推出的官方的依赖注入框架名称叫:hilt)
  25. Java8中的双冒号是什么意思?(方法引用,但是当时没答上来,因为不知道,只知道有这个东西)
  26. 说说登录验证的过程
  27. 登录验证时有没有在cookie中拿token的情况?如果从cookie中拿,怎么拿(主要是CookieManager)

暂时就回忆起这么多,整个面试时间是比较长的,我五点到的F社,答完题开始面试应该不到六点钟,面试结束之后是七点半。

最后问了F社的面试大佬几个问题:

  1. 公司的业务相关(主要是服务日本的客户,由于疫情原因,日本的互联网产业得到了一个发展的契机,所以公司业务在不断增长,F社主要是利用先进的互联网技术,为客户定制各种移动端相关的解决方案。个人理解,这个公司主要是靠研究市面上最流行的技术以此来吃技术红利)
  2. 公司的规模(我要是没记错,应该是全球500人左右)
  3. 公司在哪里有分公司(日本,成都,大连)
  4. 总部规划的大连这边分公司的发展规模(不设人数限制,有营业额的目标)
  5. 公司中对于日语这一块有什么要求?不会日语是否有问题?(公司对于日语没有硬性要求,但是不会日语可能会影响到自己的绩效,换句话说,会日语的人,由于可以沟通,可以提案,所以相对来讲非常的吃香,会体现在奖金收入上)
  6. 公司日语好的人的比例?(日语好的基本都在日本,公司接的都是一手客户,所以日语好的人必须能够像日本人一样,直接跟客户沟通,并且沟通的非常圆润,比如可以即兴开个玩笑之类的。而且得知我毕业之后工作过两年的公司之后,说公司里应该也有一个我当时的同事在,ちょうさん,可能是张也可能是赵,但是我都没有印象)

其实自己还想问一个问题:目前对日开发的人材凋敝严重,公司如何解决这个问题?
但是想了一下,没有问这个问题,因为这不是我这种等级的人应该关心的。

过程基本就是以上这些,总结一下。
整体来讲,这个面试不算成功,很多问题都没有回答上来。不过也从侧面印证了这家公司面试是比较正规的,问的问题也很能考察候选人的技术能力。这次面试个人感觉基本也是凉凉,但是确实是一个不错的面试经历。值得分享。

缘分:

  1. F社的面试大佬(领导)是我一个小区的邻居
  2. HR家小孩比我家小孩正好大三天

后记

两天后的晚上,接到了F社的电话,告知面试决定採用。但是薪资给不到预期,因为自己在面试中的表现并不好。
我个人首先是非常的惊讶,因为确实自己答得不咋地。可能根本原因还是S哥那句话:目前大连市面上会Android,懂日语的,太少了。

但是接到电话的彼时彼刻我已经收到了ZKCD的offer,并决定加入。所以这算是这次换工作过程中的一个小的惊喜。

最后虽然F社也做出让步,决定通过其他方式给我涨薪,但是我还是婉拒了这份工作。因为我已经答应了ZKCD,并且个人也算看好即将从事的车载方向。

这件事让自己想到最近岳父大人跟自己的一次聊天,当时就谈到,现在做这行,要想不被淘汰就要一直学习下去。
现在的我早已不是青春少年,但是深知落后就要挨饿的道理。所以我也会一直努力的学下去。

努力的学习,努力的活着。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值