腾讯音乐Android暑期实习面经

一面(2024/4/3 65min)

  1. 三线程交替打印(给15min)
现有三个线程,负责功能如下:
* 线程 A:只输出 0
* 线程 B:只输出偶数
* 线程 C:只输出奇数
*
* 输入n,表示要打印数字序列的终点,序列按照0102...n格式输出。
* 其中,zero() 打印0,even()打印偶数,odd()打印奇数。
*
* 示例 1:
* 输入:n = 2
* 输出:"0102"
* 解释:三个线程异步执行,其中一个调用 zero()打印0,另一个线程调用 even()打印偶数,最后一个线程调用odd()打印奇数。正确的输出为 "0102"。
*
* 示例 2:
* 输入:n = 5
* 输出:"0102030405"
  1. 我没写出来,时间到了之后,面试官就问一些实现上的问题,首先说一说思路,我想用等待唤醒机制,面试官问还有没有其他实现方式,我说观察者模式,面试官说这和等待唤醒其实是一样的,然后面试官说了一个内置函数yield(),JUC仔细学是在大二了,用得少只记得有这个东西,忘了是用来干嘛的了
  2. 问完方案就问实现上的问题,首先是变量可见吗,我说可以加上volatile关键字,然后就追问我volatile关键字的原理,内存读写屏障。volatile关键字修饰的变量保存在哪里?我懵了,变量保存在哪里跟volatile修饰有啥关系吗,全局变量在方法区,局部变量在函数调用栈,跟volatile有关系吗
  3. 接下来问实习和项目做的一些事,这个不具有啥参考性,大伙实习做的事,项目的内容多少不太一样
  4. 介绍一下最近做的一个需求
  5. 你的实现有做策略的选择吗,收益如何
  6. 除了插桩还可以用什么实现方式,说了动态代理,还有吗?……想不到了
  7. 聊项目,说一说项目中你理解的最深的一个框架
  8. 屏幕适配怎么实现?知道怎么实现折叠屏适配吗?(我只是个在校生,咋会有机会做这个)
  9. xxhdpi和xhdpi中存放的图片哪一个占用的内存高?(查了一下,如果手机屏幕密度相同的文件夹下不存在此文件,而在大于手机屏幕密度的文件夹下存在此资源, 会进行缩小相应的倍数的平方https://blog.csdn.net/zhujiangtaotaise/article/details/112907477,所以如果xxhdpi和xhdpi存放的图片都是xhdpi的话,xhdpi占用的内存高,xxhdpi所占内存低)

反问:

  1. 部门业务和技术栈?
  2. 面试中的不足?面试官说这个倒是也不太好说(我听到这里心里咯噔一下),毕竟在校生嘛,看得出来你还有一些紧张,语速有点快
  3. 面试一共几面?三轮技术
  4. 如何平衡好工作和自身技术的提升?

面完大概两天后我上去看到流程结束了……

总结:被上强度了,全程没有问单独的八股,手撕、实习、项目就引出所有东西,问你实现,问你优化,问你其他方案,整个面试过程中我听到最多的一句就是“除了你的这种实现方案还有其他方式吗?”,我需要现场想一种方案出来,面试官很强很强,我说得很多东西他能很快的get到,面试官他们做的方向和我实习的方向恰好对口,问得很深很深,面试过程确实紧张,上来的线程交替打印没做出来,已经有点慌了,感觉TME的hc很少,一面就挂了,有点受打击

后来又被捞了……

再一面(2024/4/11 50min)

  1. 上次没有通过,下来有去分析原因吗?有做记录还有去网上查找解释。说一说你下来整理的一个点,我说了xxhdpi和xhdpi的那个问题
  2. 一张图片加载到内存后,已知图片是100kb,如何计算图片在手机的大小?(可能是这个意思?)我说先通过计算每个像素所占用的内存,然后乘以已知的分辨率。面试官又说图片在内存中的内存大小和在其他地方是不一样的
  3. 说一说你实习做的一些工作,这个面试官不像上一次的面试官跟我实习的方向匹配,我介绍完之后面试官都没有追问啥技术问题
  4. 算法题,*********,要求O(n)时间,O(1)空间,位运算,利用异或的性质
  5. 算法题,*********II,要求O(n)时间,O(1)空间,分组异或,关键逻辑在于怎么分组,以前做过,面试的时候想不起来
  6. 说一说JVM内存分区?栈内存满了会怎样?StackOverFlowError
  7. 32位系统和64位系统的本质区别是什么?你应该知道so动态链接库吧,不知道……
  8. 你知道的可以检测内存泄漏的工具有什么?
  9. 说一说LeakCanary的原理?
  10. 如何查看进程的内存占用?这里要问linux命令,我寻思着我简历也没写linux啊,下来查了一下
  11. 获取程序pid:lsof -i:3306 或者 ps -aux | grep mysq ld

    假如我获取的mysqlpid3779

    那查看cat /proc/3779/status | grep VmRSS 或者top -p 3779

  12. 你如何理解虚拟内存?面试官要问操作系统,我是非科班出身,操作系统这块不太会(简历我没写这块),我说了我学Binder的时候对这方面的理解,然后面试官又问了我虚拟内存的作用?我说了方便了内存的管理,举个例子?然后面试官补充多说了一个扩展了内存空间
  13. 学过计算机网络吧,学过,说一说TCP和UDP的区别?
  14. 如果是UDP协议如何保证可靠性?序列号机制和超时重传
  15. 起初的HTTP的传输层是?TCP协议。后来的HTTP3的传输层是?QUIC协议。QUIC协议如何实现的?UDP
  16. 如何实现服务端的主动推送,客户端的被动接收?也就是不是由客户端去做主动请求。我只知道一个socket
  17. OKHttp的原理是什么?
  18. 如果你的应用是处于休眠状态,这个时候服务端要推送数据给客户端,客户端如何实现接收?

一、如果在这个手机上有其他我们系列产品的客户端,可以借由这些客户端来接收,接收之后再来拉起目标进程。如果没有系列产品呢?而且也不能保证这些产品处于活跃状态,所以这不是业界的主流方案

二、通过和厂商合作,然后在手机操作系统层面去实现接收服务端数据,再由操作系统来拉起目标进程。嗯你说对了,这才是业界的主流方案

反问:

  1. 我还有哪方面需要去提高的?
  2. 招聘实习生/在校生会看重他的什么?实习/实践经历?还是基础知识?面试官说看重基础,因为有些人并不像你们一样有相关的开发经验,如果他的基础好的话,那我们也相信他能很快上手。我沉默了,有点不知所措,敢情面试就不是看经历和匹配度就看算法和八股是吗,我开始思考对于面试来说实习到底有没有用。实习的这段时间我的业务开发能力、做事能力都有很大的提升,但这些面试官不在乎。
  3. 面试流程是怎样的?两轮技术和一轮HR

总结:结束之后不久我上官网看了下,流程结束了,情理之中也是意料之外。这一次的面试不像上一次的面试,面试官并不问我的实习和项目,只是问他想问的基础,甚至问了很多我简历上没写的知识。有一种会叫做面试官觉得你应该会。字里行间好像稍显抱怨,但也没精力仔细斟酌用词了。这段时间的糟心事和挫败太多了。也是自己在实习期间对于八股和算法的学习确实少了很多,接下来得抓一抓了

全部评论
可以面两次吗?
点赞 回复
分享
发布于 04-11 18:32 重庆
呜呜,我也是昨天面的移动客户端刚刚挂了,唉想找个实习好难啊😞
点赞 回复
分享
发布于 04-12 21:14 湖北
联想
校招火热招聘中
官网直投
哥,压力面啊,都问的好深
点赞 回复
分享
发布于 04-16 14:18 广东

相关推荐

1. 自我介绍2. 为什么后端转客户端?3. 你觉得你项目中最有挑战性的是什么?4. 两级缓存的数据一致性如何保证?5. 两级缓存对于网站加载速度提升有多少?接口里面只有查询接口吗?有没有涉及到锁的使用?6. 你觉得网页加载速度受哪些因素影响?7. 验证码为什么要放入缓存里?验证码放缓存里不合适吧?放入缓存里如果被重复使用呢?阿里云没有提供过期时间吗?8. 文件分片怎么做的?9. 为什么要用base64编码?转为base64后文件会变大多少?上传base64比直接上传文件快了多少?上传一个2G的视频要多久?10. 你觉得你这个设计有什么问题?(提了AWS S3)11. 你说的这个怎么会是一个更安全成熟的方案呢?如果是客户需要使用,肯定不可能使用第三方的文件上传服务,肯定是公司开发自己的文件上传服务,就针对你自己设计的方法,你讲讲还有什么优化的地方。12. 某个分片上传失败了怎么办?从http的角度如何去解决?13. 跟前端或者客户端对接用的什么协议?14. 浏览器输入URL之后发生了什么?你刚只说了渲染HTML,那如果还有JS呢?15. 多线程是怎么做的?对于查询的并发是如何去考虑的?参数怎么设置的?最大线程数为什么只设置为4?16. 网站的QPS是多少?17. 智力题:1-1000中有几个7,不用写代码,直接算出来。18. 除了做的项目,你平时还有哪些方向的拓展?19. 项目有些需求没做完,ddl马上到了怎么办?20. 学习成绩怎么样?21. 平时有什么爱好?22. 你怎么看待APP未来的发展?23. 平时会注意一些APP的产品使用体验吗?24. 平时哪些APP用的比较多?反问1. 需要学习哪些东西可以快速上手客户端开发?2. 后面还有技术面吗?
点赞 评论 收藏
转发
7 10 评论
分享
牛客网
牛客企业服务