自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 Android面试遇坎,我精选了这些题目与答案,你离大厂还有多远测试一下就知道。

这份Android面试题集适应于实习 & 初级工程师 & 中级工程师,高级工程师勉强吧。其中包括腾讯、字节、美团、阿里、百度…等一线互联网大厂的真题讲解。笔者在搜集问题的同时,也花了大半年的时间整理答案。目前我就职于某大厂安卓高级工程师职位,在当下大环境下也想为安卓工程师出一份力,通过我的技术经验整理了面试经常问的题,答案部分会是一篇文章或者几篇文章,都是我认真看过并且觉得不错才整理出来,大家知道高级工程师不会像刚入门那样被问的问题一句话两句话就能表述清楚,所以我通过过滤好文章来帮助大.

2022-02-22 10:23:36 322

原创 Flutter Riverpod 全面深入解析,为什么官方推荐它?

随着 Flutter 的发展,这些年 Flutter 上的状态管理框架如“雨后春笋”般层出不穷,而近一年以来最受官方推荐的状态管理框架无疑就是 Riverpod ,甚至已经超过了 Provider ,事实上 Riverpod 官方也称自己为 “Provider,但与众不同”。Provider 本身用它自己的话来说是 “InheritedWidget 的封装,但更简单且复用能力更强。” ,而 Riverpod 就是在 Provider 的基础上重构了新的可能。关于过去一年状态管理框架的对比可以看 《2

2022-02-11 16:29:58 295

原创 腾讯一天的生活……

很多小伙伴好奇腾讯的工作节奏,这确实也是选择一家公司或部门的重要指标。为了让大家心里有个底,今天就来给大家介绍下牛牛在腾讯一天的生活。一日之计在于晨鹅们早上上班一般有 3 种方式:公交、班车、自驾。公交会很挤,压力山大;班车的话,由于是定时,需要起得很早才能赶得上;自驾,大概率会堵车。为了避免可怕的通勤,牛牛一直在公司附近租房子,所以房租也是一笔很大的开销,花了这么多钱,当然要好好享受节约出来的通勤时间啦。一般来说,牛牛会自然醒,大概是 7、8 点,起床把早饭做好,叫醒还在赖床的女朋友,一起边吃

2022-02-10 21:10:26 257

原创 抽丝剥茧,深入剖析 Python 如何实现变量交换

Python 程序员肯定知道 a,b = b,a,这句话用来交换两个变量。相较于其它语言需要引入一个 temp 来临时存储变量的做法,Python 的这种写法无疑非常优雅。佶屈聱牙的 C 写法:int a = 1; int b = 2; int temp; temp = a; a = b; b = temp; 简洁优雅的 Python 写法:a,b = 1,2 a,b = b,a 虽然语法非常方便,但我们始终不曾想过:它是怎么运作的?背后支撑它的机制是什么?下面让我

2022-01-19 15:07:28 119

原创 超实用的30个 Python 案例

Python是目前最流行的语言之一,它在数据科学、机器学习、web开发、脚本编写、自动化方面被许多人广泛使用。它的简单和易用性造就了它如此流行的原因。在本文中,我们将会介绍 30 个简短的代码片段,你可以在 30 秒或更短的时间里理解和学习这些代码片段。1.检查重复元素下面的方法可以检查给定列表中是否有重复的元素。它使用了 set() 属性,该属性将会从列表中删除重复的元素。def all_unique(lst): return len(lst) == len(set(lst))

2022-01-19 14:14:58 542

原创 Python 获年度编程语言

在12月编程语言排行榜出炉时,TIOBE Software首席执行官曾预测2021年度编程语言是C#,这个出生20多年的编程语言,至今未获得过该荣誉。然而最新结果出炉,C#落选,Python再次荣获年度编程语言称号。首先,恭喜Python连续两次摘得TIOBE年度编程语言宝座。该荣誉代表的是过去一年收视率增长最快的编程语言。这是Python第五次获得这个奖,其他四次分别是2007年、2010年、2018年和2020年。过去一年,Python从年初TIOBE指数的第3位开始,热度不断上升,把原来分别位居前

2022-01-19 13:59:35 128

原创 Android修炼系列:一个由 AsyncTask 引起的线上问题

背景我们对外提供了一个 sdk,收到客户的反馈,说他们监控平台监测到 sdk 内部的一个接口 A 经常有耗时,最多能达到 10 几秒。可从我们自己的平台看,接口 A 的耗时是正常范围的,而且使用的网络库 timeout = 8s,不太可能出现耗时 10 几秒的问题。由于客户也没有稳定的复现场景,也不排除是对方统计工具的问题,就卡住了。进展重新回到代码中,经过又一番的代码走查,注意到了该接口有使用 AsyncTask ,点进 AsyncTask 源码一看,突然有种玄学变科学的感觉: priv

2022-01-18 15:56:57 75

原创 毕业即月入过万很难吗?

谈及“00后”,你首先想到的还是小屁孩?殊不知,不知不觉间,“00后”已经登上历史舞台。从2021年开始,首批“00后”大学毕业,正式成为职场中的新生力量!同时,关于“00后”的一些调查也格外吸引眼球。理想与现实的差距前不久,中国青年报·中青校媒面向全国各地大学生做了一项关于就业的调查,回收2700份调查结果显示:在各个行业中,互联网行业是最受欢迎的,**64.33%大学生希望毕业后能进入互联网行业工作,**其中排名前三的公司分别是:字节跳动、阿里巴巴和京东。关于薪资的调查显示,00后对毕业后的收入

2022-01-16 13:30:00 221

原创 他12岁,黑了学校网站

昨天在知乎上看了一个叫 Ret2Rttr 的小朋友分享文章,讲述了自己渗透自己学校网站的经历。注意了,这可是位七年级 12 岁的小朋友,整个过程逻辑清晰,有理有据,相当有意思。我 12 岁干啥来着?好像正偷偷拿着《挪威森林》看绿子,后生可畏。以下为原文:上周三,闲着无聊,准备上学校网站看看,想我这种 Pwn 狗,自然是对 Web 没啥希望了。但是,我还是觉得上学校网站看看,说不定呢~所以我登上了学校网站,开始了渗透…信息收集无聊的我登录上了学校主站 说实在找不到啥突破点 连个能交互的地方都

2022-01-15 22:28:11 2482

原创 某江苏公务员吐槽:985毕业后考上公务员,钱少事多,远不如去字节当程序员的室友混得好

二线城市公务员vs字节程序员,哪个好?某二线城市公务员发帖抱怨自己远远不如室友混得好,两个人都是985科班,毕业后室友去了字节,钱多事少,收入一直在涨,自己则“意外”考上了公务员,入职后待遇一直在降。原本两人收入差距不大,现在根本没法比,而且自己比他更忙。看得出,楼主的悔恨都要溢出屏幕了,网友安慰他,楼主可以干到75岁,不用担心失业,而室友不行,他35岁就没了。有人说,人生是长跑不是短跑,不要只对比现在,公务员对以后的人生都比较好,而字节要用钱买命。有人说,资本家不会发善心养闲人,室友.

2022-01-15 21:20:34 285

原创 MVVM 成为历史,Google 全面倒向 MVI

前言前段时间写了一些介绍MVI架构的文章,不过软件开发上没有最好的架构,只有最合适的架构,同时众所周知,Google推荐的是MVVM架构。相信很多人都会有疑问,我为什么不使用官方推荐的MVVM,而要用你说的这个什么MVI架构呢?不过我这几天查看Android的应用架构指南,发现谷歌推荐的最佳实践已经变成了单向数据流动 + 状态集中管理,这不就是MVI架构吗?看起来Google已经开始推荐使用MVI架构了,大家也有必要开始了解一下Android应用架构指南的最新版本了~总体架构两个架构原则Andro

2022-01-15 15:22:28 169

原创 【开源项目】Compose仿豆瓣榜单客户端,了解一下~

前言Compose正式发布也有一段时间了,感觉要上手还是得实战一波。所以借着空闲时间,参照豆瓣榜单页面的设计,开发了几个Compose版的豆瓣榜单页面UI效果还是挺好看的,有兴趣的同学可以点个Star:Compose仿豆瓣榜单客户端效果图首先看下最终的效果图特性在项目中主要用到了以下几个特性,以美化UI及体验支持设置沉浸式状态栏及状态栏颜色支持水平方向滚动,竖直方向滚动等多种UI效果支持给Image设置渐变滤镜,以美化显示效果支持标题与列表页联动通过Paging支持了分页加载

2022-01-14 22:02:53 1653

原创 最简单的Android Studio阅读Android源码方式

最简单的阅读Android源码方式(方便、快捷、完整)对于Android开发人员阅读Android系统源码是非常重要的事情,但很多时候我们关心的只是framework层的源码。但是网上一搜全是教我们怎样把Android源码通过AOSP先下载到本地,然后进行编译,然后再导入到AS中进行调试的。这个过程是一个非常痛苦的过程,首先源码体积非常大,下载非常困难,占的磁盘空间也非常大。然后编译的话必须要有linux环境。即使编译好了由于源码太多,导入过程也是一个非常耗时间的过程。这个过程谁经历过谁知道。为了解决

2022-01-14 22:01:10 2802

原创 Android架构学习之路一-漫谈

架构不是一蹴而就的,希望我们有一天的时候,能够从自己写的代码中找到架构的成就感,而不是干几票就跑路架构是什么对于架构,我也有些一知半解,读了一些架构相关的文章,结合实际项目经历,有了自己的一些理解。关于架构是什么?这点可以顾名思义去看,架构=架+构,即整体的一个架子和各个组件之间的组合结构。当然可能不同的程序员对于项目架构的风格和习惯不一样,但是底层的思想应该都是类似的,诸如我们可能听到起了茧子的“关注点分离”,“低耦合高内聚”,“可扩展可复用易维护”等等,听完这些话,感觉自己懂了,又感觉啥也不懂.

2022-01-13 22:19:42 565

原创 2022年为什么要使用Flutter构建应用程序?

2022年为什么要使用Flutter构建应用程序?今天每个人都想构建一个应用程序,但是谁又能责怪他们呢?事实上,如今每个人都拥有智能手机,它已迅速成为我们白天最常使用的工具。当我们没有它们时,我们会感到缺少一些东西,我们甚至把它们带到洗手间,我们甚至想不出没有它们,如何出门。无论我们喜欢与否,它对我们生活都在进行最快,最积极的影响,而这要归功于应用程序。应用有一种特殊的方式来吸引用户,而其他事物则没有。这可能是由于其漂亮的用户界面,经过深思熟虑的用户体验或完美的可用性。这就是为什么编程可以被认为是一门艺

2022-01-13 22:13:31 1489

原创 MVI 架构封装:快速优雅地实现网络请求

前言网络请求可以说是Android开发中最常见的需求之一,基本上每个页面都需要发起几个网络请求。因此大家通常都会对网络请求进行一定的封装,解决模板代码过多,重复代码,异常捕获等一些问题前面我们介绍了MVI架构的主要原理与更佳实践MVVM 进阶版:MVI 架构了解一下~MVI 架构更佳实践:支持 LiveData 属性监听我们这次一起来看下MVI架构下如何对网络请求进行封装,以及相对于MVVM架构有什么优势本文主要包括以下内容MVVM架构下的网络请求封装与问题MVI架构下封装网络请求MV

2022-01-13 17:13:42 193

原创 Android - 资源加载扫盲

Android资源的含义Android使用xml文件描述各种资源,包括字符串、颜色、尺寸、主题、布局、甚至是图片(selector,layer-list)资源可分为两部分属性在APK程序中,属性定义在res/values/attrs.xml中,在系统中属性位于framework/base/core/res/res/values/attrs.xml文件中<declare-styleable name="Window"> <attr name="windowBackg

2022-01-12 14:45:03 2530

原创 手淘 Android 帧率采集与监控详解

APM 提供帧率的相关数据,即 FPS(Frames Per Second) 数据。FPS 在一定程度上反映了页面流畅程度,但 APM 提供的 FPS 并不是很准确。恰逢手淘低端机性能优化项目开启,亟需相关指标来衡量对滑动体验的优化,帧率数据探索实践就此拉开。在探索实践中,我们遇到了许多问题:高刷手机占比相对不低,影响整体 FPS 数据非人为滑动数据参杂在 FPS 中,不能直接体现用户操作体验计算平均数据时,卡顿数据被淹没在海量正常数据中,一次卡顿是否只影响一个 FPS 值还是一次用户操作体验?

2022-01-12 14:42:38 513

原创 使用整洁架构优化你的 Gradle Module

前言现代的 Android 项目都是 Gradle 工程,所以大家都习惯于用 Gradle Module 来划分和组织代码,Module 的大量使用也带来一个问题,一个大项目往往几十上百的 Module,但是当数量众多的 Module 之间的依赖关系不合理时,仍然会严重拖慢工程的编译速度,如何更科学地组织 Gradle Module 是 Android 开发领域的普遍需求。从事 Android 开发的同学可能都听说过 Clean Architecture,即所谓整洁架构。Google 推荐大家使用它对

2022-01-12 14:41:11 104

原创 @Compose 注解到底做了什么?了解一下~

前言了解过Compose的同学都知道,只需要添加一个@Compose注解就可以将函数转化成Compose函数,同时Compose函数也只能在Compose函数中运行。这看起来似乎跟协程比较像,@Compose是不是也像协程一样,往函数中添加了一些参数呢?我们就一起来看下,@Compose到底做了什么,又是怎么做到的。前置知识一看到@Compose注解,我们很容易就想到注解处理器,但是@Compose的解析并不是通过注解处理器来实现的,因为注解处理器只能生成代码,不能修改代码而KCP(Kotlin

2022-01-11 21:59:20 3091

原创 大厂的 404 页面都长啥样?看到最后一个,我笑了。。。

腾讯网易淘宝百度新浪微博新浪京东优酷腾讯视频搜狐携程去哪儿今日头条知乎439937手游网易严选美团饿了么小米魅族苏宁爱奇艺猪八戒网CSDNYouTubeGitHubstackoverflowRedditFacebookAmazonBingslack.comAirbnbDropboxmashable.comVirgin.com...

2021-12-22 17:33:31 176

原创 精选Android中高级高频面试题:四大组件及Fragment原理

因为实际开发与参考答案会有所不同,再者怕误导大家,所以这些面试题答案还是自己去理解!面试官会针对简历中提到的知识点由浅入深提问,所以不要背答案,多理解。Activity1、说下Activity生命周期 ?参考解答:在正常情况下,Activity的常用生命周期就只有如下7个onCreate():表示Activity正在被创建,常用来初始化工作,比如调用setContentView加载界面布局资源,初始化Activity所需数据等;onRestart():表示Activity正在重新启动,一..

2021-12-21 15:48:31 125

原创 当我们讨论Android重建机制时在讨论什么?

前言Android应用有一个常常被忽略的问题,但问题出现时你又不得不面对。比如Activity横竖屏转换时Fragment重影应用长时间处于后台,并用户重新切到前台时,Activity显示异样或者需要等待一段时间才能显示内容这类问题都与Activity的恢复重建机制相关,如果你想知道怎么解决这类问题,以及Activity恢复重建机制内部原理。这篇文或许能够帮到你。1 什么时候会重建并不是任何Activity的销毁行为都会触发Activity数据的保存。只有销毁行为是被系统发起的并且今

2021-12-16 15:41:10 5096

原创 Android Jetpack Compose 最全上手指南

在今年的Google/IO大会上,亮相了一个全新的 Android 原生 UI 开发框架-Jetpack Compose, 与苹果的SwiftIUI一样,Jetpack Compose是一个声明式的UI框架,随着了今年安卓和苹果两大移动平台相继推出自己的UI开发框架Jetpack Compose 和SwiftIUI,标志着移动操作系统正式全面拥抱声明式 UI 开发模式。一、声明式 UI 的前世今生其实声明式 UI 并不是什么新技术,早在 2006 年,微软就已经发布了其新一代界面开发框架 WPF,其采用

2021-12-15 20:37:03 574

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除