![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
程序员
文章平均质量分 87
m0_65321095
这个作者很懒,什么都没留下…
展开
-
可能是目前最全的《Android面试题大全》(中高级),kotlin从入门到进阶实战pdf
好了,废话少说,现在是求职高峰期,我把我收集到的资料分享给大家。也祝到家有个好工作。(本文资料 适合1-3年)从基础到架构进阶,包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中高级安卓技术点。文章中所列主要为大纲部分,详细内容可以在文末自行获取哈!如果你熟练掌握本文中列出的知识点,相信将会大大增加你通过前两轮技术面试的几率!这些内容都供大家参考,互相学习。第一章 网络面试题1、HTTP协议2、TCP/IP协议原创 2022-03-01 23:44:33 · 463 阅读 · 0 评论 -
副本,字节跳动技术整理
阿里薪资结构:一般是12+1+3=16薪。年底的奖金为0-6个月薪资,90%人可拿到3个。股票是工作满2年才能拿,第一次拿50%,4年能全部拿完。说到股票,就要普及一下常识了:股票是公司用来奖励员工忠诚度的,所以阿里分年限行权,想要离职套现真的是难,更不要提高额税收了。首先,归属要收高达45%的个税,然后得到的还是限制性股票,还不能马上卖呢。好不容易可以出售的时候,还得交20%股票增值部分的个人所得税哦!更重要的是,你必须先缴税,才能归属,缴税还必须用现金!所以,拿的越多,先拿出的cash就越多.原创 2022-03-01 23:41:43 · 4233 阅读 · 0 评论 -
【复习笔记】Java基础理论知识,微信小程序趋势及前景
double a = 5.5;int b = (int)a;12. 如何生成指定范围的随机数?//生成一个 MIN 和 MAX 范围内的随机数int randNumber =rand.nextInt(MAX - MIN + 1) + MIN;13. Java选择结构| Java选择结构 || :-: || 基本if选择结构 || if-else选择结构 || 多重if选择结构 || 嵌套if选择结构 || switch选择结构 |Tip:在java中switch后的表达式的类型原创 2022-02-17 23:51:06 · 401 阅读 · 0 评论 -
【中级—,BAT面试&高级进阶
}自定义Style定义进入和退出的动画:进入:<?xml version="1.0" encoding="utf-8"?>退出<?xml version="1.0" encoding="utf-8"?>动画的style在指定的位置显示//显示窗口window.showAtLocation(MainActivity.this.findViewById(R.id.main), Gravity.BOTTOM|Gravity.CENTER_HORIZONT原创 2022-02-17 23:49:41 · 219 阅读 · 0 评论 -
【Java转Android】52,flutter下拉加载
}<?xml version="1.0" encoding="utf-8"?>xmlns:app=“http://schemas.android.com/apk/res-auto”><itemandroid:id="@+id/item1"android:title=“备份”android:icon="@drawable/ic_backup"app:showAsAction=“always”/><itemandroid:id="@+id/item2"a原创 2022-02-17 23:48:16 · 127 阅读 · 0 评论 -
【BYM】Android 实现相机快门动画,hashmap底层实现原理
6.重新计算依旧是正弦函数,余弦函数,算出点在红线上的位置。float L1 = (float) Math.sqrt(Math.pow(mRadius, 2.0) -Math.pow(Math.sin(Math.toRadians(60)) * a, 2.0));float consL1 = L1 / mRadius;float sinL1 = (float) Math.sin(Math.toRadians(60)) * a / mRadius;float L = (float) (L1 + M原创 2022-02-17 23:46:51 · 257 阅读 · 0 评论 -
【android每日一问】插件化原理解析,移动客户端开发工程师专业
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.com.sohu.test.app/com.sohu.test.app.MainActivity}:java.lang.RuntimeException: Unable to instantiate application android.app.Application: java.lang.IllegalStateException:Unable to get原创 2022-02-17 23:45:26 · 250 阅读 · 0 评论 -
【Android 初级知识】文字颜色 背景 触摸点击 反馈色 之selector的那些事儿
at android.os.Looper.loop(Looper.java:194)at android.app.ActivityThread.main(ActivityThread.java:5691)at java.lang.reflect.Method.invoke(Native Method)at java.lang.reflect.Method.invoke(Method.java:372)at com.android.internal.os.ZygoteInit$MethodAndArg原创 2022-02-17 23:44:01 · 142 阅读 · 0 评论 -
【 Flutter 手势探索】我的第二本小册来了,kotlin入门
继 《Flutter 绘制指南 - 妙笔生花》 小册之后,经过小半年的业余时间:从整体构思到代码案例实现,从源码调试 到 分析码字,我的第二本小册 《Flutter 手势探索 - 执掌天下》 终于和大家见面了。2. 想说在前面的话手势、绘制、动画、布局 四个大部分是界面构成和交互体验的核心,一切可视的展现、交互的触发都脱离不了这四者。 Flutter 作为一个优秀的跨平台框架,但很多人对他并没有全面的认知,只停留在表面的使用上。如果需求的 UI 表现没有内置组件 支持,就无法继续进行,只能找三方库,原创 2022-02-17 23:42:36 · 1314 阅读 · 0 评论 -
「性能优化系列」APP内存优化理论与实践,android实战pdf
空闲列表空闲列表是在Java堆内存不完整的情况下使用的方式,已使用内存与空闲内存无规则,并且JVM另外维护了一张空闲内存的表,当有新对象需要分配内存时,就从空闲列表中查找一块足够该对象的内存。处理并发安全问题;当对象创建很频繁时,就需要去解决并发的问题,也就是线程安全。比如程序中多线程创建m和n两个对象,给m对象分配内存的同时也会给n对象分配,如果这时候两个对象分配的是同一块内存,必然就出现了冲突。 为了解决这个并发的问题,JVM提供了两种方式。CAS算法+失败重试方式CAS是项乐..原创 2022-02-17 23:41:11 · 188 阅读 · 0 评论 -
《软件工程之美》打卡第六周,春招我借这份PDF的复习思路
不同的角色应该承担不同的责任:软件测试:对功能质量负责,产品测试验收,确保满足功能需求开发人员:对代码质量负责,写测试代码,通过自动化的方式做功能测试项目负责人:对过程质量负责,起主要责任最理想状态:人人都为产品质量负责。32 | 软件测试:什么样的公司需要专职测试?软件测试的主要工作发现bug报告bug跟踪bug如何发现bug?根据需求设计测试用例,尽可能覆盖所有用户操作的可能。除了基本的功能性测试,还需要进行非功能性的测试,包括性能、安全性和用户体原创 2022-02-17 23:39:46 · 138 阅读 · 0 评论 -
不妨借一步说话,你想知道的关于设计模式的种种,android物联网开发配套代码
装饰器设计模式(Decorator design pattern)被用于多个 Java IO 类中。2. 什么是设计模式?你是否在你的代码里面使用过任 何设计模式?设计模式是世界上各种各样程序员用来解决特定设计问题的尝试和测试的方法。设计模式是代码可用性的延伸3.Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式单例模式重点在于在整个系统上共享一些创建时较耗资源的对象。整个应用中只维护一个特定类实例,它被所有组件共同使用。Java.lang.Runtime 是单例模式的经典例原创 2022-02-16 19:19:29 · 6030 阅读 · 0 评论 -
三年android经验面经,深度解析,值得收藏
–> 启动器(注意任务的依赖关系,参考work-steaking机制可作为后期优化方向)+ 结合业务 + SP的不足 + Provider + 锁检查等(业务不复杂,其实收益不明显,但是知道好过不知道,很多黑科技得慎用)10. 插件化原理,换肤原理,热修复原理,插件化怎么实现把apk渲染成界面的?–> 这几个都是热门话题,其实现实中负责相关开发的应该不多,但是可以提现技术追求,答出要点即可,细坑背也没用的,你没做过啊11. mmkv一般不是做缓存的吗?为什么和启动优化有关系?–>原创 2022-02-16 19:16:40 · 198 阅读 · 0 评论 -
三年Android开发,竟只会增删改查,被面试官一顿怼,android性能优化面试
所以职场新人的主人翁意识一定要加强,你要持续提升自己的能力,持续强化自己创造价值的能力。举个例子,比如说现在公司支付你20万每年,那么你应该有目标能给公司带来远超过20万的收益,多多益善。你有这个能力,公司肯定也会对你相应回报。如果公司不给你升职加薪,那么一走了之,潇洒痛快。优质的人才从来都是抢着要。学习建议在平时的工作之余,我整理了一份Android开发核心知识笔记,主要包含一下几部分,大家在学习的时候可以参考下:一、架构师必备Java基础1、深入理解Java泛型2、注解深入浅出原创 2022-02-16 19:15:15 · 102 阅读 · 0 评论 -
万字攻略,详解腾讯面试(一,最新Android大厂高频面试题
随后,郭靖收到一条短信,大概内容就是何时何地参加GM面试。GM就是General Manager,翻译过来就是总经理。郭靖的心情,由紧张激动,变成了一点点落寞,原来面试还没有结束。所以,郭靖还得再跑一次腾讯,去现场参加总经理面。七. 总经理面流程郭靖上次是开车去的,结果到处找停车位,还差点迟到。这次郭靖变聪明了,直接打车去。总经理面,是最重要的一轮面试,在很大程度上,决定了郭靖能否拿到最终的offer.秘书MM带着郭靖来到总经理办公室旁,郭靖觉得跟以前不一样了。嗯,单独的一间办公室。正在思索间,原创 2022-02-16 19:13:50 · 418 阅读 · 0 评论 -
一篇看懂Android与Flutter之间的通信,吃一堑长一智
前面讲了Android与flutter通信的一些基础知识,下面就进入正题,来看Android如何与flutter进行通信。Android与Flutter之间的通信共有四种实现方式。由于在初始化flutter页面时会传递一个字符串——route,因此我们就可以拿route来做文章,传递自己想要传递的数据。该种方式仅支持单向数据传递且数据类型只能为字符串,无返回值。通过EventChannel来实现,EventChannel仅支持数据单向传递,无返回值。通过MethodChannel来实现,Metho原创 2022-02-16 19:12:25 · 1921 阅读 · 0 评论 -
一篇文章带你了解人工智能,android面试知识点
六、人工智能于各产业的渗透(举例)七、学习人工智能总结前言=================================================================计蒙在深圳2019年底接触过一个深度学习的产品研发,由此也有试着切入这个行业的想法,再次回学校生活后,恰巧安排的课程也有python的基础课。2020年的时候也写过一篇偏概念的文章:人脸识别简单介绍随着计蒙定时对开发的关键词的收集过程中,发现人工智能的热度已经有显著提升。加上计蒙有很多粉丝..原创 2022-02-16 19:09:35 · 180 阅读 · 0 评论 -
一次面试被问到ArrayMap,原理及源码分析详解,互联网寒冬公司倒闭后
/** {@hide} */public ArrayMap(int capacity, boolean identityHashCode) {mIdentityHashCode = identityHashCode;// If this is immutable, use the sentinal EMPTY_IMMUTABLE_INTS// instance instead of the usual EmptyArray.INT. The reference// is checked later原创 2022-02-16 19:08:09 · 137 阅读 · 0 评论 -
一次违反常规的大厂OPPO面试经历(文末有面试答案领取)
**本地方法栈。**本地方法栈与Java栈的作用和原理非常相似。区别只不过是Java栈是为执行Java方法服务的,而本地方法栈则是为执行本地方法(Native Method)服务的。在JVM规范中,并没有对本地方发展的具体实现方法以及数据结构作强制规定,虚拟机可以自由实现它。在HotSopt虚拟机中直接就把本地方法栈和Java栈合二为一。堆。堆是内存管理的核心区域,用来存放对象实例。几乎所有创建的对象实例都会直接分配到堆上。所以堆也是垃圾回收的主要区域,垃圾收集器会对堆有着更细的划分,最常见的就是把堆..原创 2022-02-16 19:06:44 · 179 阅读 · 0 评论 -
【自学Flutter】37 WebSockets的使用,2021Android大厂面试题来袭
void initState() {ioWebSocketChannel = IOWebSocketChannel.connect(‘ws://echo.websocket.org’);}void sendMessage() {if (textEditingController.text.isNotEmpty) {ioWebSocketChannel.sink.add(textEditingController.text);}}@overridevoid dispose() {ioWeb原创 2022-02-15 19:11:14 · 264 阅读 · 0 评论 -
【View系列】手把手教你解决ViewPager2滑动冲突,2021年华为Android面试真题解析
}//5//如果cancelChild为true 则将mFirstTouchTarget的头部去掉并回收if (cancelChild) {if (predecessor == null) {mFirstTouchTarget = next;} else {predecessor.next = next;}target.recycle();target = next;continue;}predecessor = target;target = next;}}//View.原创 2022-02-15 19:05:34 · 1286 阅读 · 0 评论 -
利用RadioButton实现底部导航栏,flutter视频教程仿京东
android:layout_width=“wrap_content”android:layout_height=“match_parent”android:layout_weight=“1”android:button="@null"android:drawableTop="@drawable/main_menu_me"android:drawableTint="@drawable/menu_color"android:gravity=“center”android:text="@strin原创 2022-02-05 17:02:05 · 307 阅读 · 0 评论 -
分享一份非常强势的多家BAT大厂的Android面试题(美团,滴滴
热修复,插件化HashMap源码,SpareArray原理性能优化,怎么保证应用启动不卡顿怎么去除重复代码SP是进程同步的吗?有什么方法做到同步介绍下SurfViewHashMap实现原理,ConcurrentHashMap 的实现原理BroadcastReceiver,LocalBroadcastReceiver 区别Bundle 机制Handler 机制android 事件传递机制线程间 操作 ListApp启动流程,从点击桌面开始动态加载类加载器OSGIHttps请求.原创 2022-02-05 16:57:51 · 130 阅读 · 0 评论 -
几需一行代码完成多语言切换,android驱动开发书籍推荐
applySystemLanguage : 设置系统语言applyLanguage : 设置语言isAppliedLanguage : 是否设置了语言getAppliedLanguage : 获取设置的语言getContextLanguage : 获取上下文的语言getAppContextLanguage : 获取应用上下文的语言getSystemLanguage : 获取系统的语言updateAppContextLa原创 2022-02-05 16:56:25 · 2778 阅读 · 0 评论 -
冬困秋乏春无力-来一份全面的面试宝典洗洗脑,移动设备开发网易云音乐app开发说明
灰色保活: 利用系统的漏洞启动前台 Service黑色保活所谓黑色保活,就是利用不同的 app 进程使用广播来进行相互唤醒。举个 3 个比较常见的场景:场景 1: 开机,网络切换、拍照、拍视频时候,利用系统产生的广播唤醒 app场景 2: 接入第三方 SDK 也会唤醒相应的 app 进程,如微信 sdk 会唤醒微信,支付宝 sdk 会唤醒支付宝。由此发散开去,就会直接触发了下面的 场景 3场景 3: 假如你手机里装了支付宝、淘宝、天猫、UC 等阿里系的 app,那么你打开任意一个阿里系的 app原创 2022-02-05 16:53:35 · 2146 阅读 · 0 评论 -
写了个 Android 性能检测的库,还有人看性能相关的么?
同时还实现了以下功能实时通过 logcat 打印问题高效保存检测信息到本地提供上报到指定服务器接口接入指南====1 在 APP 工程目录下面的 build.gradle 添加如下内容dependencies {debugImplementation “com.xander.performance:perf:0.1.9”releaseImplementation “com.xander.performance:perf-noop:0.1.9”}2 APP 工程的 App原创 2022-02-05 16:52:10 · 99 阅读 · 0 评论 -
再见吧 buildSrc, 拥抱 Composing builds 提升 Android 编译速度
object Versions {…val appcompat = “1.1.0”…}object Deps {…val appcompat = “androidx.appcompat:appcompat:${Versions.appcompat}”…}重启你的 Android Studio,项目里就会多出一个名为 buildSrc 的 module,实现上面演示的效果Project-ComposingBuild新建的 module 名称 versionPlugin在 ve原创 2022-02-04 17:45:51 · 2223 阅读 · 0 评论 -
关于Edittext点击弹出软键盘,布局上移标题消失问题,微信聊天界面
android**:layout_width=****“fill_parent”**android**:layout_height=****“match_parent”**android:fillViewport=“true” >3,关于当ScrollView里的元素想填满ScrollView时,使用"fill_parent"是不管用的,必需为ScrollView设置:android:fillViewport=“true”。当ScrollView没有fillVeewport=“true”时,原创 2022-02-04 17:43:01 · 1047 阅读 · 0 评论 -
如何开发一个App(Android),Android开发技巧
开发工具,Android因为历史原因,前面很长一段时间使用的是Eclipse,我们要开发Android应用的时候需要另外安装Google为它开发的插件ADT,Eclipse这个开源软件很优秀,也很专业,但仅仅只是使用它来开发Android就显得有点鸡肋了,如果没有对Eclipse进行优化的话,会很卡很卡,后面Google实在不愿意寄人篱下,就专门为我们开发者开发了目前很受广大开发者推崇的Android Studio,现在2.0预览版也出来啦,大伙赶紧去下吧。模拟器===Android自带的模拟器一直原创 2022-02-03 21:11:44 · 14034 阅读 · 0 评论 -
如何尽快的学会某项技术,先足够应付面试遇到的问题,kotlin可变长参数
每次回忆时,深入挖掘还不太懂的部分,尝试理解原理,更新到思维导图上,这样对于该技术的理解就会慢慢变深厚。多看源码。这一步也很重要,一直停留在表层技术并不能帮你拿到一个好的offer。5.出去面试,检验自己努力的结果都说实践是检验真理的唯一标准,切勿纸上谈兵。当自己觉得掌握些那些技术的时候,要实战检验,也要能举一反三,自己实践过后才知道哪里还可以在完善,面试过后才知道这个点还能这么做等你对思维导图了然于胸,并且有了一定深度之后,就去面试吧,很大可能会把面试官忽悠住,以为你是个隐藏王者。6.小建议打原创 2022-02-03 21:10:19 · 637 阅读 · 0 评论 -
大学毕业做音视频开发,月入20K,你呢,安卓开发项目实战
编码的终极目的,说白了,就是为了压缩。各种五花八门的视频编码方式,都是为了让视频变得体积更小,有利于存储和传输。我们先来看看,视频从录制到播放的整个过程,如下:首先是视频采集。通常我们会使用摄像机、摄像头进行视频采集。限于篇幅,我就不打算和大家解释CCD成像原理了。采集了视频数据之后,就要进行模数转换,将模拟信号变成数字信号。其实现在很多都是摄像机(摄像头)直接输出数字信号。信号输出之后,还要进行预处理,将RGB信号变成YUV信号。前面我们介绍了RGB信号,那什么是YUV信号呢?简单来说,Y.原创 2022-02-03 21:00:25 · 159 阅读 · 0 评论 -
大厂出来的就一定实力强嘛?大平台=高能力?,android地图开发框架
事情的真相就是:离开平台的你,可能什么也不是。生活中的蠢驴===============================================================曾经看过一个寓言故事,特别有意思。寺院里养着一头拉磨的驴。时间长了,驴厌倦了这种枯燥的日子想出去走走。有一天,僧人带它去山下驮东西。到了山下,人们看到一僧一驴,都虔诚地跪拜,这让驴感到莫名其妙。一路见多了跪拜的人群,驴就飘飘然起来:原来人们这样崇拜我啊!回到寺院,这头自视高贵的驴再也不肯拉磨了。僧人无奈,只好把它原创 2022-02-03 20:59:01 · 97 阅读 · 0 评论 -
大厂面试问题广?先来看看这些Android高级面试题你都掌握了没
三、Android优秀三方库源码1、你项目中用到哪些开源库?说说其实现原理?2、Android中软引用与弱引用的应用场景四、热修复、插件化、模块化、组件化、Gradle1、热修复和插件化热修补技术是怎样实现的,和插件化有什么区别?为什么选用插件化?2、模块化和组件化模块化的好处组件化原理,组件化中路由(ARouter)的实现Android 组件化的原理,还有一些组件化平时使用的问题。项目组件化的理解多模块开发的时候不同的负责人可能会引入重复资源,相同的字符串,相同原创 2022-02-02 19:41:03 · 108 阅读 · 0 评论 -
大厂面试前最强Android程序员复习资料,一份精华的面试PDF解决长时间复习问题,助你大厂Offer拿到手软
JAVA基础知识算法和数据结构职业发展规划相关问题安卓基础知识安卓基础知识确实很多,如果日常积累不够的话确实比较头晕,比如我承认我只在 APP 升级的时候搞过一个前台的 Service,但是面试的时候就会问你 Service 生命周期,如何绑定,如何跨进程通讯,如何关闭Service 等等,你肯定不能说"我没用过我不会"。所以我们就要复习,一来我们可以应付面试,二来我们也可以通过基础知识的积累来提高我们的能力。首先我又读了一遍《Android开发艺术探索》,想以该书为基础展开复习..原创 2022-02-02 19:39:38 · 101 阅读 · 0 评论 -
备战金九银十:Android面试10+个知识点总结宝典助你通关
资源相关的系统配置发生改变或者资源不足:例如屏幕旋转,当前Activity会销毁,并且在onStop之前回调onSaveInstanceState保存数据,在重新创建Activity的时候在onStart之后回调onRestoreInstanceState。其中Bundle数据会传到onCreate(不一定有数据)和onRestoreInstanceState(一定有数据)。防止屏幕旋转的时候重建,在清单文件中添加配置: android:configChanges=“orientation”原创 2022-02-02 19:38:13 · 422 阅读 · 0 评论 -
备忘录模式,kotlin编程
**Originator发起人角色:**内部状态会发生变化的角色,负责内部创建备份数据和恢复数据状态。Memento备忘录角色: 负责存储发起人的内部状态。**Caretaker备忘录管理者角色:**对备忘录对象进行保存和提取。示例代码:public class Originator {private String state;/**创建一个当前状态的备忘录对象*/public Memento createMemento(){return new Memento(st..原创 2022-02-02 19:36:48 · 139 阅读 · 0 评论 -
在 Android 中使用生物识别,蓝牙ble开发教程
复制代码若要在 Android 应用中实现生物识别身份验证,请使用 AndroidX Biometric 代码库。虽然 API 可以自动处理不同的认证级别 (指纹、面部识别、虹膜识别等),但您仍然可以通过 setAllowedAuthenticators() 方法设置应用可以接受的生物认证级别,具体如下面的代码所示。Class 3 (以前被称为 Strong) 级别代表您希望使用生物识别来解锁存储在 Keystore 中的凭证;Class 2&n原创 2022-02-02 19:31:09 · 340 阅读 · 0 评论 -
抖音、美团、微信,kotlin教学
构:屋宇、供人居住的木、砖瓦构筑物。 简称:组件整体结构和组件的组合就形成了架构。以 Android 架构为例子一个 APP 通常是有 class(类)组成,而这些 class 之间如何如何组合、相互之间如何发生作用,则是影响这个 APP 本身的关键点。细分的话可以分为类、接口(连接器)、任务流。所谓类就是组成架构的核心 “砖瓦”,而接口则是这些类之间通讯的路径、通讯的机制、通讯的期望结果。任务流则是描述系统如何使用类和接口完成某一项需求比如:一次网络请求。 上面介绍架构中提到了房屋、木头、砖瓦可见.原创 2022-01-31 19:24:20 · 180 阅读 · 0 评论 -
扒一扒:2020台湾Android-Kotlin-&-Java-面試題庫,竟如此--
b、onStart顯示給用戶可見:建立 onStop 所釋放的資源c、onResume可與用戶互動:恢復 onPause 釋放的資源,或需要每次進來就初始化的動作d、onPause部份可見:做一些系統資源的釋放 ( GPS、相機…等 ) ,以達省電效果。e、onStop => onRestart => 接到 onStart隱藏:檢查並釋放資源,以避免 memory leak,onPause 中 heavy-load 的工作應該移到 onStop 來做。f、onDestroy (原创 2022-01-31 19:20:05 · 1485 阅读 · 0 评论 -
我,Android开发5年,32岁失业,android开发需要什么基础
面试机会来自于朋友内推一面:四大组件广播分类-有序广播和无序广播的区别service生命周期 / onStartCommand的返回值有什么作用Activity生命周期 / 启动模式 / 各种启动模式下的startActivityForResultandroid 7.0 8.0 9.0的新特性讲一讲android的动画怎么实现多线程线程间怎么通信handler机制handler的post/postDelay怎么做的looper和线程是怎么对原创 2022-01-31 19:18:39 · 1034 阅读 · 0 评论