开发2-3年,成功入职华为od,从12w涨薪到26w,分享一下其面试题

2023-11-22 06:51

本文主要是介绍开发2-3年,成功入职华为od,从12w涨薪到26w,分享一下其面试题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

面试经历

分享一位面试了五家二线互联网公司的朋友,成功从12w涨薪到26w,其面试的公司为:网易云音乐、华为od、货拉拉、扇贝、途牛,我记录了他面试华为od部分面试真题。答案也放在下面了,还有更多大厂面试题可以去文末领取。

1、 有一个线程池,核心线程数5个,最大线程数10个,阻塞队列最大存放10个数据,如何快速加载完100Kbitmap没答出来

答案:重写拒绝策略,在拒绝策略里调用阻塞队列的阻塞的添加方法

2、一个函数里面有个异步调用, 异步调用有返回值,如何使这个函数变成同步的,返回异步执行的返回值

回答的wait和notify
答案:当时紧张没get到点,面完想想不就是join吗

3、Android里面的Drawable用过吗 ,说说系统常见有哪些drawable ,然后问了Drawable里面的callback. mutate函数的作用

没答出来
答案:常见的有ColorDrawable. BitmapDrawable、 ClipDrawable. AnimationDrawable.

Callback作用:当drawable触发属性更新的时候,希望把更新的操作丢给外部处理就用到callback

Mutate作用:当加载资源文件里的相同的drawable的时候,会共用里面的ConstantState对象,也就是说我修改某个drawable的state里的某个属性,因为共用,所以其他的drawable也会对应更改, mutate是新建了只属于自己当前drawable的ConstantState,所以这个只属于自己,而且不可主动替换为用哪个ConstantState

drawable讲解: hts://ww.jianshu.com/p/578125001dc2

4、 现在有一个纵向的RecyclerView ,里面的item是一一个横向的RecyclerVview ,请问如何优化提高RecyclerView的性能

(我回答了共用缓存池,重写getitemld ,面试官提示我可以从绘制方面入手,如何减少绘制)

https://blog.csdn.net/hxl517116279/article/details/107058425/

https://blog.csdn.net/smileiam/article/details/88396546

5、sp是进程不安全的,如何保证进程安全(我回答的contentprovider ) ,那如何跨进程监听到sp的改变呢(没有回答上来)

hts://juejin.cn/post/6844903476569325581

6、jetpack组件用过吗,说说livedata如何实现生命周期的监听的,就是在activity不在前台为啥就不会通知到数据改变,等到到了前台才通知呢(我不太清楚这边, jetpack还没怎么学)

答案:在添加observer的时候会把当前的生命周期对象lifecycleowner-并传入 ,也会把这个observer添加到生命周期对象的LifecycleRegistry对象里的map里面,在发送事件的时候会判断一下, observer所在的生命周期对象的状态是至少否为started (前台可见) , 不然就不通知它,当生命周期对象生命周期发生改变的时候,会挨个调用lifecycleRegistry里面的observer,会发生多次调用observer ,但是observer的activeStateChanged函数会判断是否是状态没变,没变就不会往下走

7、 事件分发中,有哪些会发送canceI事件(我回答触发父容器的拦截条件时会发送,其他的我不太知道)

搜罗的答案:1、父容器拦截了事件。2、 viewgroup移除当前view。3、 window移除当前view

htps://ww.jianshu.com/p/0a8ec531d5fb

8、glide源码有看过吗 ,怎么复用里面的bitmap的
(这边复用缓存我不太清楚,有些问题我没明白,所以没抓到问的点)

9、networkInterceptor和普通的用户自定 义的拦截器区别在哪里
(我回答的是network拦截器是在获取到网络数据时使用的,这时候的数据是完全服务端返回的,可以在这里监听分析网络的状态之类的,面试官说还有就是重定向的时候,这个拦截器会执行两次,普通的只会执行一-次) 这边我还说了普通拦截器可以额外统一处理添加请求头之类的, network拦截器这边不好加,实我想表达的是network拦截器这边不太好加,因为到这里已经拼接成完整报文了,面试言就反驳说这边也可以加的,当时被前面的问题搞懵了,没表达清楚

10、http2.0与11的区别
(我回答的是2.0可以多路复用,而且是基于流传输的,而且可以几个请求同时进行)

那2.0是如何传输数据的呢(我回答的是,把请求头简化,改成代号来指代,然后将整个报文数据分割传输,到了对面拼接起来)

那如何区分是谁的请求呢(这个我还真忘了, 我说好像是给数据进行标号)

如何知道该不该用2. 0的通道连接这个请求呢(我回答的是先尝试发个h2c请求头,看服务器返回,面试官说如何一开始知道呢,我不是很清楚,然后问了面试官,他说进行证书验证的时候会携带这些信息,我猛然想起扔物线里面是有说到的,我疏忽了,忘了这个了)

1、如果我现在在电梯里面,怎么进行弱网下的网络请求优化呢(我先回答的是通过android api获取到当前网络状态,然后发给服务端,服务端根据参数返回不同数据,我这边虎了虎了, 这是解决图片在弱网下的一一个方法 ,和这个题目不搭嘎,面试官说如果数据不减少呢,就是这么多,我回答不上来)

后来思考的答案: 1、是否可以改变数据的存储格式为protobuf ,再用gzip压缩。2、该请求支持分段获取的话,我们可以按顺序分段获取数据,按部分展示给用户。3.复用连接.4、开启缓存

12、讲-讲dns优化呢 (我回答的是httpdns ,说了dns解析的话可能会被运营商劫持,而且可能会运用网速很慢的ip进行解析, httpdns是直接用ip请求的,而且会返回优质ip。面试官问还有别的吗 ,超出我的知识范围了,有其他大厂应该也做了类h似httpdns的东西)

如何保证dns不被劫持,不会给你返回别的ip呢(我说可以使用https请求,里面的证书会验证域名,面试官说运营商还是会进行dns劫持的,比如你要访问百度,我不给你访问,我给你跳到google ,我就不会了,超出我的知识范围)

13、如何进行冷启动优化的呢(我回答,有adbshell命令可以统计app启动速度,在androidstudio里面有工具可以抓取ap启动所执行的操作,查看火焰图、topdown那些图可以找到耗时函数,然后做对应优化,我尝试过把三方sdk放到子线程或者延迟初始化,然后根据layout inspector工具减少布局的嵌套之类的,然后看看有没有过度绘制什么的,面试官说这些都是常规优化,还有别的吗,好吧,超出知识范围)

14、kotlin rified关键字讲一讲(我回答我只是运用了基础的kotin语法开发过,这个不清楚)

15、一个按钮我点击了, 这个view如何第一时间刷新重绘的呢(我回答的是,如果是surfaceview主动调用刷新会立即重新刷新,但是普通的不会的啊,它只会订阅下一帧,等下一帧到来的时候才会重绘)

那如何确保下一帧到来的时候就重绘呢(我回答的是,通过handler的同步屏障知识,当订阅下一-帧重绘的时候 ,设置同步屏障,确保只有这个view会第一时间被执行,等这个view执行完毕,再撤销同步屏障)

16、canvas 与surface的区别(我回答canvas继承自surface ,然后最终是通过surfaceflinger进行绘制的,其他不是很清楚)

17、时间差不多了,你有什么想问的吗(我虽然基本没答上来,但是还是厚着脸皮问了: 我想问下,万-有幸能进入网易的话,我想问问项目中大概用到了哪些技术,我去学习或者复习下。面试官回答我: kotlin要好好学下, flutter也学下,我们这边是以绘制view为主,用mwm和jetpack全家桶的,因为的确好用,也要学下。因为我还说了这次好难,我太菜了,面试官还安慰不要灰心.上面很多问的是细节,好好加油)

更多面试题以及答案可以点击文末的卡片,扫码免费领取哦。

在这里插入图片描述
在这里插入图片描述

这篇关于开发2-3年,成功入职华为od,从12w涨薪到26w,分享一下其面试题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/408314

相关文章

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Python虚拟环境与Conda使用指南分享

《Python虚拟环境与Conda使用指南分享》:本文主要介绍Python虚拟环境与Conda使用指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python 虚拟环境概述1.1 什么是虚拟环境1.2 为什么需要虚拟环境二、Python 内置的虚拟环境工具

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

华为鸿蒙HarmonyOS 5.1官宣7月开启升级! 首批支持名单公布

《华为鸿蒙HarmonyOS5.1官宣7月开启升级!首批支持名单公布》在刚刚结束的华为Pura80系列及全场景新品发布会上,除了众多新品的发布,还有一个消息也点燃了所有鸿蒙用户的期待,那就是Ha... 在今日的华为 Pura 80 系列及全场景新品发布会上,华为宣布鸿蒙 HarmonyOS 5.1 将于 7

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件