2022/5/24 腾讯客户端三面
腾讯三面
面试官直接跳过自我介绍这个环节了。
1、你说你在项目中有做代码优化?能谈谈你如何进行优化的吗?
回答:MVC、线程池、按功能分目录、设计模式。
2、你项目中只有一个controller类吗?
3、你在拓展新业务的时候是来一个新功能都用继承去解决吗?
4、万一你想拓展的功能和你的抽象controller的功能不一致,你还是继承这个父类吗?
答:用抽象工厂模式、装饰者模式去扩展新业务。
5、还有什么方法可以拓展?
答:用组合。
6、尝试写一个组合的demo。(这里写代码挖了一个坑,自己跳了进去,晕~)这里被问了好久!!!
7、你这里用单例模式,getInstance函数传进来一个VolumnManager参数为null的话还能初始化成功吗?
8、既然你的VolumnManager是单例模式,那你为什么要用组合呢?
9、你的项目里面还做了什么方面的优化?
答:用线程池对线程的个数进行限制,优化线程的执行,提高资源利用率。
10、你怎么知道用线程池的效率优于直接new Thread().start() ?(这里答得不够好~)
答:(1)统计每次的运行时间,优化前后做对比 (2)用Android Profile性能监视器监视(Cpu占有率、对象数、recorder查看函数执行性能占比)(3)用adb命令输出内存占比、cpu等等
11、你有读研打算吗?
12、问一个非技术类的,项目过程中你有遇到什么难题吗?
13、给建议:要用数据去验证,而不是听到什么就是什么。
有很多忘记了······感觉答得一般般,但也是尽力了,希望能有下一面吧!!大家一起加油!!