2023小红书Android面试之旅

一面

  • 自我介绍

  • 看你写了很多文章,拿你理解最深刻的一篇出来讲一讲

    讲了Binder相关内容

  • Binder大概分了几层

  • 哪些方法调用会涉及到Binder通信

  • 大概讲一下startActivity的流程,包括与AMS的交互

  • 全页面停留时长埋点是怎么做的

    我在项目中做过的内容,主要功能是计算用户在每个Activity的停留时长,并且支持多进程。这里的多进程支持主要是通过以ContentProvider作为中介,然后通过ContentResolver.call方法去调用它的各种方法以实现跨进程

  • 动态权限申请是什么

    详见 Android动态权限申请从未如此简单 这篇文章

  • 你做的性能监测工具,FPS是怎么采集的

  • 性能监测工具用在了什么场景

  • 有没有通过这个性能监测工具去做一些优化

  • 图片库,例如Glide,一般对Bitmap有哪些优化点

  • 过期的Bitmap可以复用吗

  • 有没有基于ASM插桩做过一些插件

  • 讲了一下当时做过的一个个人项目 FastInflate

    这个项目没能达到最终的目标,但通过做这个项目学习了很多新知识,比如APT代码生成、阅读了LayoutInflater源码、AppCompatDelegateImpl实现的LayoutInflater.Factory2会极大的拖慢布局创建的速度等

  • 怎么优化布局创建速度

    提示了预加载,但我当时脑抽在纠结xml的缓存,没想到可以提前把视图先创建好

  • 说一下你觉得你最擅长或者了解最透的点

    我回答的自定义View

  • 解决过View的滑动冲突吗

  • 讲解了一个之前写过的开源控件 SwipeLoadingLayout

  • 一般遇到困难的解决方案是什么

  • 算法题:反转链表

  • 反问阶段

    • 咱们组主要负责哪些内容

    • 主要使用Java还是Kotlin

      Kotlin

    • 小红书的面试一般是怎么个流程?多少轮?

      一般三轮技术面,一轮HR面

    • 面试完一般多久会给到结果

      比较快,一两天的样子

二面

  • 自我介绍

  • 为什么这个时间节点想要出来换工作呢

  • 在B站这些年做了什么

  • 做了哪些基础组件

    讲解了一下之前写的 SwipeLoadingLayout

  • 介绍一下Android的事件传递机制

  • 你写的这个分享模块是如何设计的

    对外采用流式调用的形式,内部通过策略模式区分不同的平台以及分享类型,给每个平台创建了一个中间Activity作为分享SDK请求的发起方(SDK.getApi().share())以及分享结果的接收方(onActivityResult),然后通过广播将分享的结果送入到分享模块内进行处理,最终调用用户设置的分享回调告知结果

  • 看你之前在扇贝的时候有开发过一些性能监测工具,那有做过性能优化吗

  • 你是如何收集这些性能数据的

  • 有没有对哪方面做过一些针对性的优化

  • Android系统为什么会触发ANR,它的机制是什么

  • 有解过ANR相关的问题吗?有哪几种类型?

  • 算法题:二叉树的层序遍历

  • Queue除了LinkedList还有哪些实现类

  • 现在还在面其他公司吗?你自己后面职业生涯的选择是怎么样的?

  • 给我介绍了一下团队,说我面试的这个部门应该说是小红书最核心的团队,包括主页、搜索、图文、视频等等都在部门业务范畴内,部门主要分三层,除了业务层之外还有基础架构层以及性能优化层

  • 反问阶段

    • 部门分三层的话,那新人进来的话是需要从业务层做起吗?

      不是这样的,我们首先会考虑这个同学能干什么,然后会考虑这个同学愿意去做什么,进来后,有经验的同学也会来带你的,不会一上来就让你抗输出,总之会把人放到适合他的团队里

    • 小红书会使用到一些跨端技术吗?

      会,之前在一些新的App上使用的Flutter,现在主要用的是RN,还会使用到一些DSL,这个不能算跨段。为什么在小红书社区App中跨端技术提及的比较少,是因为小红书App非常重视用户体验,对性能的要求比较高

三面

  • 自我介绍

  • 介绍一下目前负责的业务

  • 工作过程中有碰到过什么难题,最后是怎么解决的

    一开始脑抽了没想到该说什么,随便扯了一个没啥技术含量的东西,又扯了一个之前做的信号捕获的工具,后来回忆起来了,重新说了一个关于DEX编排的东西(主DEX中方法数超过65535导致打包失败,写了个脚本将一部分Class从主DEX中移除到其他DEX中)

  • 如何设计一个头像的自定义View,要求使头像展示出来是一个圆形

  • 介绍一下Android事件的分发流程

  • 如何处理View的防误触

  • 怎么处理滑动冲突

  • ActivityonCreate方法中调用了finish方法,那它的生命周期会是怎样的

  • 如果我想判断一个Activity中的一个View的尺寸,那我什么时候能够拿到

  • RecyclerView如何实现一个吸顶效果

  • JavaKoltin你哪个用的比较多

  • 有用过Kotlin的协程吗

  • Kotlin中的哪些Feature你用的多,觉得写的好呢

  • 你是怎么理解MVVM

  • 你有用过Jetpack Compose

  • 有用过kotlin中的by lazylateinit

  • kotlin中怎么实现单例,怎么定义一个类的静态变量

  • 算法题:增量元素之间的最大差值

  • 你这次看机会的原因是什么

  • 反问阶段我感觉之前问的差不多了,这次就没再问什么问题了

HR面

  • 现在是离职还是在职状态

  • 介绍一下之前负责的工作

  • 用户量怎么样

  • 这个项目是从0到1开发的吗

  • 这个业务有什么特点,对于客户端开发有什么挑战与困难

  • 团队分工是怎样的

  • 这个项目能做成现在这个样子,你自己的核心贡献有哪些

  • 这个事情对你来说有什么收获吗

  • 在B站的工作节奏是怎么样的

  • 离职的原因是什么呢

  • 你自己希望找一个什么样的环境或者什么阶段的业务

  • 你对小红书有什么了解吗

  • 未来两三年对于职业发展的想法

  • 你觉得现在有什么限制了你或者你觉得你需要提升哪些部分

  • 反问阶段

    • 问了一些作息、福利待遇之类的问题

总结

小红书面试总体而言给我的体验是很好的,每轮面试后基本上都是当天就能出结果,然后约下一轮的面试。最终从一面到HR面结束出结果,一共花了9天时间,还是挺快的。二面结束后,一面的面试官加我微信说小红书目前很缺人,感兴趣的同学也可以来试试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/162780.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RocketMQ-NameServer详解

前言 ​ RocketMQ架构上主要分为四部分, Broker、Producer、Consumer、NameServer,其他三个都会与NameServer进行通信。 Producer: ​ **消息发布的角色,可集群部署。**通过NameServer集群获得Topic的路由信息,包括Topic下面有哪些Queue&a…

PTA-病毒感染检测

人的DNA和病毒DNA均表示成由一些字母组成的字符串序列。然后检测某种病毒DNA序列是否在患者的DNA序列中出现过,如果出现过,则此人感染了该病毒,否则没有感染。例如,假设病毒的DNA序列为baa,患者1的DNA序列为aaabbba&am…

数据结构与算法编程题15

设计一个算法&#xff0c;通过遍历一趟&#xff0c;将链表中所有结点的链接方向逆转&#xff0c;仍利用原表的存储空间。 #include <iostream> using namespace std;typedef int Elemtype; #define ERROR 0; #define OK 1;typedef struct LNode {Elemtype data; …

【从入门到起飞】JavaSE—多线程(3)(生命周期,线程安全问题,同步方法)

&#x1f38a;专栏【JavaSE】 &#x1f354;喜欢的诗句&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。 &#x1f386;音乐分享【如愿】 &#x1f384;欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f354;生命周期&#x1f384;线程的安全问题&#…

【Leetcode合集】1410. HTML 实体解析器

1410. HTML 实体解析器 1410. HTML 实体解析器 代码仓库地址&#xff1a; https://github.com/slience-me/Leetcode 个人博客 &#xff1a;https://slienceme.xyz 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 ""…

YOLOv7独家改进: Inner-IoU基于辅助边框的IoU损失,高效结合 GIoU, DIoU, CIoU,SIoU 等 | 2023.11

💡💡💡本文独家改进:Inner-IoU引入尺度因子 ratio 控制辅助边框的尺度大小用于计算损失,并与现有的基于 IoU ( GIoU, DIoU, CIoU,SIoU )损失进行有效结合 推荐指数:5颗星 新颖指数:5颗星 收录: YOLOv7高阶自研专栏介绍: http://t.csdnimg.cn/tYI0c …

开发抖音小游戏什么技术

开发抖音小游戏&#xff0c;使用以下技术可能会相对简单&#xff1a; HTML5&#xff1a;HTML5 是一种用于创建网页和应用程序的标准标记语言。它具有丰富的功能和灵活性&#xff0c;可以在各种设备和平台上运行&#xff0c;包括移动设备和浏览器。HTML5 提供了许多游戏开发所需…

大模型AI Agent 前沿调研

前言 大模型技术百花齐放&#xff0c;越来越多&#xff0c;同时大模型的落地也在紧锣密鼓的进行着&#xff0c;其中Agent智能体这个概念可谓是火的一滩糊涂。 今天就分享一些Agent相关的前沿研究&#xff08;仅限基于大模型的AI Agent研究&#xff09;&#xff0c;包括一些论…

完美解决AttributeError: module ‘numpy‘ has no attribute ‘typeDict‘

文章目录 前言一、完美解决办法安装低版本1.21或者1.19.3都可以总结 前言 这个问题从表面看就是和numpy库相关&#xff0c;所以是小问题&#xff0c;经过来回调试安装numpy&#xff0c;发现是因为目前的版本太高&#xff0c;因此我们直接安装低版本numpy。也不用专门卸载目前的…

Qt全球峰会2023中国站 参会概要

Qt全球峰会2023中国站 参会概要 前言峰会议程签到 & Demo 演示开场致辞Qt Group 产品总监演讲&#xff08;产品开发的趋势-开放的软件、工具和框架&#xff09;产品战略QtQuick or QtWidgets&#xff08;c or qml&#xff09;Qt如何定义AI个人看法 Qt 在券商数字化转型和信…

【MySQL】内连接和外连接

内连接和外连接 前言正式开始内连接外连接左外连接右外连接 前言 前一篇讲多表查询的时候讲过笛卡尔积&#xff0c;其实笛卡尔积就算一种连接&#xff0c;不过前一篇讲的时候并没有细说连接相关的内容&#xff0c;本篇就来详细说说表的连接有哪些。 本篇博客中主要用到的还是…

快速去除Word文档密码,全面解决你的困扰

如果你忘记了Word文档密码&#xff0c;或者想解密和去除Word文档密码&#xff0c;下面是简单步骤&#xff1a;第一步&#xff0c;百度搜索【密码帝官网】找到官方网站&#xff1b;第二步&#xff0c;点击“立即开始”&#xff0c;进入用户中心&#xff0c;上传需要解密的文件。…

中部A股第一城,长沙如何赢商?

文|智能相对论 作者|范柔丝 长沙的马路&#xff0c;都很有故事。 一条解放西路&#xff0c;是全国人民都争相打卡的娱乐地标&#xff1b;一条太平街&#xff0c;既承载了历史的厚重又演绎着现代的鲜活...... 但如果来到河西的桐梓坡路&#xff0c;风景会变得截然不同。 沿…

应用软件安全编程--28SSL 连接时要进行服务器身份验证

当进行SSL 连接时&#xff0c;服务器身份验证处于禁用状态。在某些使用SSL 连接的库中&#xff0c;默认情况下不 验证服务器证书。这相当于信任所有证书。 对 SSL 连接时要进行服务器身份验证的情况&#xff0c;示例1给出了不规范用法(Java 语言)示例。示例2 给出了规范用法(J…

安装MySQL搭建论坛

课前默写&#xff1a; 1、nginx配置文件的区域有哪些 ①全局区域 ②events区域 ③http区域 2、区域模块的作用 全局区域模块主要是用户和工作进程 events区域模块配置最大连接数时需先配置:vim /etc/limits.conf 因为系统默认最大是1024 http区域模块&#xff1a;代理地…

BUUCTF [HBNIS2018]excel破解 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 得到的 flag 请包上 flag{} 提交。来源&#xff1a; https://github.com/hebtuerror404/CTF_competition_warehouse_2018 密文&#xff1a; 下载附件&#xff0c;得到一个attachment.xls文件。 解题思路&#xff…

计算机视觉的应用19-基于pytorch框架搭建卷积神经网络CNN的卫星地图分类问题实战应用

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下计算机视觉的应用19-基于pytorch框架搭建卷积神经网络CNN的卫星地图分类问题实战应用。随着遥感技术和卫星图像获取能力的快速发展&#xff0c;卫星图像分类任务成为了计算机视觉研究中一个重要的挑战。为了促进这一…

git的用法

目录 一、为什么需要git 二、git基本操作 2.1、初始化git仓库 2.2、配置本地仓库的name和email 2.3、认识工作区、暂存区、版本库 三、git的实际操作 3.1 提交文件 3.2 查看git状态以及具体的修改 3.3 git版本回退 git reset 3.1 撤销修改 四、git分支管理 4.…

vue el-table (固定列+滚动列)【横向滚动条】确定滚动条是在列头还是列尾

效果图&#xff1a; 代码实现&#xff1a; html&#xff1a; <script src"//unpkg.com/vue2/dist/vue.js"></script> <script src"//unpkg.com/element-ui2.15.14/lib/index.js"></script> <div id"app" style&quo…

【数据结构】树如何定义 | 如何存储 | 实际应用

前言 如上图&#xff0c;A中的孩子的个数是不固定的。我们无法精确的每个不同的根结点有多少个孩子。所以并不能精确知道需要定义多少个孩子节点。 struct TreeNode {int val;struct TreeNode* child1;struct TreeNode* child2;struct TreeNode* child3;//...//这样显然是不能…