微信视频号安卓工程师一二面试

前言

“养心不如寡欲,自乐无如读书,痴云呆雨不可
恋,用功学习才最佳。”

“互联网寒冬”来临,一波又一波的裁员潮闹得人心惶惶。应届生卷,工作三五年的程序员也卷,找不对面试方法,再背题也是白搭。我在这分享一份微信视频号Android工程师的一二面。

一面:

(1h)

  • Java层Crash是如何捕获到的?JavaCrash的捕获有几个关键部分
  • RuntimeInit类中的LoggingHandler类,用于打印日志时使用
  • 讲一下Handler机制
  • Looper的定时器是用如何实现的?通过nativePollOnce(ptr, nextPollTimeoutMillis);定时睡眠nativeWake(mPtr);进行唤醒
  • APK包里有什么?主要有5个部分:
  • dex文件:.class文件编译后的产物
  • Assets:资源文件,如图片等,主要是通过AssetsManger来进行加载。
  • Resource:资源文件,layout等,通过R.xxxxxx.id来进行引用
  • Library:so库引用目录
  • META-INF:APK 签名有关的信息
  • APP在运行时是通过什么来获取到layout文件的?
  • 讲一下surfaceview跟textview。
  • Activity A 启动 Activity B 时,他们在同一个栈的情况下生命周期以及执行顺序是怎么样的?
  • Destroy()方法是什么时候调用的?
  • 调用finish()方法。
  • Handler中已经没有要处理的message。 满足这两个条件才会调用。
  • volatile关键字讲一下。
  • 讲一讲操作系统内核态跟系统态的了解。
  • 操作系统内核是什么?
  • 为什么操作系统要有内核态、系统态的存在?
  • Linux有什么信号?
  • sigill信号在什么情况下会触发?
  • 算法:给一个数组,每个值表示的是在坐标系中的点下标,找出该数组在组成的最长直线为多少,相同最长长度直线有几条?

    二面:

    (40~50min)
  • 讲一下Android发生Crash的整体流程。Android在遇到非可检异常时就会触发该线程的 unCatchExcepttionHandler中的unCatchException()方法,最终在该方法的 process.kill()方法中杀死该进程,appCrash完成。
  • Native层Crash是如何捕获到的?Android NativeCrash发生时会向该进程发出错误的不可处理信号,Linux系统收到该信号后无法处理便会杀死进程,发生Crash。Android当中捕获的方法主要是使用了Linux系统下的核心转储机制,在发生Crash前系统会记录下当前的上下文信息,形成tombstone文件,存储起来,再杀死线程,这个tombstone文件就是我们要分析的对象。
  • RuntimeInit类中的KillApplicationHandler类,是一个系统默认的 UncaughtExceptionHandler,用于发生JavaCrash时kill掉进程
  • 如何做到发生异常时不会杀死APP?在 UncaughtExceptionHandler.unCatchException方法调用Looper进行死循环可以。
  • RuntimeInit类中的commonInit方法,其内部就是初始化了所有线程的set UncaughtExceptionHandler()。因此在发生非可检异常时,就会调用该线程的UncaughtExceptionHandler.unCatchException方法,在该方法内部进行捕获。
  • volatile如何实现可见性?
  • synchronize如何实现可见性?
  • 有什么线程同步的机制?
  • volatile防止指令重排代码级别如何实现?
  • 操作系统内核本质上就是操作系统代码的常驻机构。
  • 操作系统内核就是管理所有代码和数据结构的集合。
  • 操作系统内核是软件和硬件之间的媒介。
  • 算法:给一段数字,给出其可能组成的所有IP地址。
#微信##微信面试##Android##安卓工程师#
全部评论
微信今年不是没有HC吗
点赞 回复 分享
发布于 2022-07-03 21:58
我想知道你面试的是哪家
点赞 回复 分享
发布于 2022-07-03 16:19

相关推荐

03-27 16:40
已编辑
门头沟学院 C++
26学院本太难了,很多公司机筛就给我刷了。机会都难拿到如果是简历存在问题也欢迎拷打————————————————————分割线——————————————————————2026.3.4更新:发完贴之后,时不时投递又收到了不少的笔试/面试邀请。主要是之前投递简历出去之后基本上都是沉默状态,年后好转了不少timeline:2026.01.21 文远知行笔试,半年多没刷算法题 ->挂 (后续HR说春招可以重新安排笔试)2026.2.4     小鹏汇天 技术一面,第二周收到结果 ->挂2026.2.12   大众Cariad代招 技术二面 ->Offer2026.2.28   多益网络技术面试,由于风评太差,一直在犹豫要不要接面试 ->推迟-----------分割线-----------2026.3 月前的某一天,临时去电网报名了二批计算机岗位的笔试2026.3.6 从上家公司实习离职,氛围最好的一家公司,leader 说可以帮忙转正,但是流程太长,而且我们部门据说只有一个 hc,更想要研究生,我很有可能是会被签外包公司在这里干活,就离职了。2026.3.9 入职新公司,大众Cariad 以外部公司的身份进组,项目组签了三年,后续三年应该都可以在这里呆,不知道有没有希望原地跳槽。2026.3.10 电网考试居然说我通过资格审查了,短信约我去参加资格审查,请假一天,买了 12 号晚上的机票回成都2026.3.15 参加国家电网计算机类笔试2026.3.17 电网出成绩了,感觉很低。觉得已经🈚️了2026.3.18 收到电网面试通知,通知 3.22-3.25 这个时间去面试,我的岗位只招 1 个人。据说面试只有 2-3 人,不知道能不能成功----------分割线-----------2026.3.21 电网面试结束,感觉回答的还勉勉强强,大概是2个岗位分别招1个人,一共11人面试,实际来了9人2026.3.27 出面试成绩,满分100分,早上10:20左右发现面试成绩46,我震惊了,没截图,后面过了十分钟重新看发现面试成绩给我改成58了。但同样震惊。朋友问我是不是把面试官打了,哈哈
点赞 评论 收藏
分享
评论
7
23
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务