首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

金三银四要来了?不要慌,Android高级面试题刷一刷

性能稳定性是怎么 业务稳定性如何保障? 如果发生了异常情况,怎么快速止损? App启动速度优化 启动优化是怎么? 是怎么异步,异步遇到问题没有? 启动优化哪些容易忽略注意点?...安卓app加固如何? 安卓混淆原理是什么? 谈谈你对安卓签名理解 为什么WebView加载会慢呢? 如何优化自定义View FC(Force Close)什么时候会出现?...(即描述清点击 Android Studio build 按钮后发生了什么?)apk里哪些东西?签名算法原理? apk打包流程 apk组成 为什么要签名? 什么是签名?...WebSocket与socket区别? 网络封装框架:Retrofit实现原理 这个是做什么用? 为什么要在项目中使用这个? 这个都有哪些用法?对应什么样使用场景?...单元测试有没有做过,说说熟悉单元测试框架? Jenkins持续集成。 工作中有没有用过或者写过什么工具?

1.4K30

金九银十要来了?不要慌,这些Android BAT高级面试题刷一刷

性能稳定性是怎么 业务稳定性如何保障? 如果发生了异常情况,怎么快速止损? App启动速度优化 启动优化是怎么? 是怎么异步,异步遇到问题没有? 启动优化哪些容易忽略注意点?...安卓app加固如何? 安卓混淆原理是什么? 谈谈你对安卓签名理解 为什么WebView加载会慢呢? 如何优化自定义View FC(Force Close)什么时候会出现?...(即描述清点击 Android Studio build 按钮后发生了什么?)apk里哪些东西?签名算法原理? apk打包流程 apk组成 为什么要签名? 什么是签名?...WebSocket与socket区别? 网络封装框架:Retrofit实现原理 这个是做什么用? 为什么要在项目中使用这个? 这个都有哪些用法?对应什么样使用场景?...单元测试有没有做过,说说熟悉单元测试框架? Jenkins持续集成。 工作中有没有用过或者写过什么工具?

1K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android 项目编译过程

    这些都需要我们对Android工程编译和打包一个比较深入理解,例如知道它每一步都做了什么,需要什么环境和工具,输入和输出是什么,等等。...首先,假定你系统(Windows、Linux、Mac OS都行,本文默认使用Linux系统来举例子,但在 Windows中几乎没有什么差别)已经安装了JDK和Android SDK, 如果没有安装,可以参考我先前博客...第二步:处理AIDL文件,生成对应.java文件(当然,很多工程没有用到AIDL,那这个过程就可以省了) 【输入】源码文件、aidl文件、framework.aidl文件 【输出】对应.java文件...文件),文件(.jar文件) 【输出】.dex文件 【工具】dex工具 第五步:打包生成未签名.apk文件 【输入】打包后资源文件、打包后类文件(.dex文件)、libs文件(包括.so文件,...当然,还可以很多事情,前提是你真正弄懂了它。 参考推荐: Android 工程编译过程 Android使用ANT打包,签名,混淆

    1.8K30

    JWT实现token-based会话管理

    claim都提供了详细验证规则描述,每个实现都会参照这个描述来提供JWT验证实现,所以如果是自定义claim名称,那么你用到实现就不会主动去验证这些claim。...它验证方法其实很简单,只要把headerbase64url解码,就能知道JWT用什么算法签名,然后用这个算法,再次用同样逻辑对header和payload一次签名,并比较这个签名是否与JWT...“1”就属于验证失败 需要注意是,在验证一个JWT时候,签名认证是每个实现都会自动,但是payload认证是由使用者来决定。...由于这是个简单demo,所以用户验证,也没有用数据查询这种级别的方式,直接用用户名密码写死方式来处理,代码都在user.js这个模块里面。...首先因为token管理都统一封装起来了,所以我在服务启动时候就初始化了一个Authentication实例: ?

    1K20

    JeecgBoot 2.4.6 版本发布,基于代码生成器企业级低代码平台

    多租户服务端对请求头校验 #2598 JeecgListMixin.js 中loadData没有对request超时处理 #2584 前端用户选择单选无法置空问题 #2610 关于OL排列逻辑小建议...Sign 签名校验失败 #2728 jeecgboot采用达蒙数据后,online代码生成模块配置数据连接无法连接 #2725 前端发现BUG #I3ZL4T 最新代码在开发环境无法在ie11上打开...目前提供四套风格模板(单表两套、一对多两套) 封装完善用户、角色、菜单、组织机构、数据字典、在线定时任务等基础功能。...│ └─一对多模型例子 │ └─打印例子 │ └─一对多TAB例子 │ └─内嵌table例子 │ └─常用选择组件 │ └─异步树table │ └─接口模拟测试 │ └─表格合计示例...│ └─选人组件 │ └─选部门组件 │ └─通过部门选人组件 │ └─封装曲线、柱状图、饼状图、折线图等等报表组件(经过封装,使用简单) │ └─在线code编辑器 │ └─上传文件组件

    1.8K10

    Spring Session - Cookie VS Session VS Token 以及 Session不一致问题N种解决方案

    节点B可没有用户一 session id 即相当于用户一没有登录呀~ 当然了可以通过一些办法解决,比如ng上开启 session sticky , 就是让用户一请求一直粘连在节点A上 。...至于客户端怎么保存这个“身份标识”,可以很多种方式,对于浏览器客户端,大家都默认采用 cookie 方式。...因此必要去寻求一种更有行之有效方法, TOKEN就随之而来 主要流程如下: ? 用户通过用户名和密码发送请求。 程序验证。 程序返回一个签名token 给客户端。...【多个节点tomcat 】 在多台 Tomcat 情况下,采用 Nginx 负载均衡。...我们这里只讨论 Spring Session提供解决方案 ,支持外部存储包括 Redis . 数据、Hazelcast、MongoDB等 ? ----

    99520

    比特币源码分析之四:签名验证

    比特币源码分析之四:签名验证 在《比特币源码分析之三:交易脚本》文中最后以比特币系统中最简单交易脚本为例子介绍了比特币脚本指令系统,其中OP_CHECKSIG指令是该指令系统核心指令,用于验证交易签名...签名验证源码封装 在《交易脚本》文中提到了CKey和CPubKey两个类是比特币源码中代表私钥和公钥两个类,而这两个类又提供了签名生成和验证封装。...,其中交易如下图 本篇所谓签名验证就是针对TxB验证,验证TxB是否花TxA提供3个比特币权利(是否私钥) 上文中提到Hash(tx+pretx.outscript)公式中tx就是TxB...这个是上文为了简化模型错误描述,这里hash是tx中除了输入脚本(sig和pubkey)之外其他字段hash,进而签名。...3、为什么是对tx除了输入脚本其他所有字段hash,而不是某个单一字段?单一字段签名验证也能证明用户是持有私钥

    3.3K81

    Android流媒体开发之路三:基于NDK开发Android平台RTSP播放器

    基于NDK开发Android平台RTSP播放器 最近做了不少android端开发,推流、播放、直播、对讲等各种应用,做了RTMP、RTSP、HTTP-FLV、自定义等各种协议,还是不少收获和心得...当然,数据接收是需要做缓冲,否则会卡顿,这个需要自己来。其次是解码,对于这点,为了保证内存使用效率,以及避免JNI调用开销,最好是在c++层来。...编译依赖对第三方,我通常都是首先尝试NDK工具链方式来编译,这样好处,一个是工作量小,能直接使用项目的makefile,当前前提是先配置好编译环境,指定好交叉编译工具;另一个是不同编译方式是相同...首先写好java层封装回调接口,然后在c++代码中,通过JNI环境,获取到java层封装类jclass对象和方法。...)那么对应签名是“(II[B)V” 以下是调用例子:图片注意最后需要DetachCurrentThread()。

    2.9K20

    【JavaWeb】78:CSS学习

    CSS一个核心标签叫style,也就是样式意思,CSS本身也就是可以设定各种各样样式。 用一个例子来说明: ? 标签,放在标签里面。...这个就有点类似于Java中方法封装,或者说经典三层架构。 Service层专门负责具体业务逻辑,Dao层专门负责数据查询,Service想访问数据,调用Dao层就好了。...但是为了降低耦合度,一般在HTML主干中只搭建结构,设定样式专门交给CSS来。 「②内部引入」 也就是一开始那个例子,sytle标签是放在head标签中。...+类名{} 类是可以多个,比如同样是font标签,相同id只能有一个,但是相同类可以多个。...「③标签选择器」 格式为:标签名{} HTML中是很多标签,可以直接使用过标签作为选择器,上图例子中是font标签。

    50030

    如何优化Golang中重复错误处理

    = nil { return ew.err } 通过自定义类型 errWriter 来封装 io.Writer,并且封装了 error,新类型一个 write 方法,不过其方法签名并没有返回...error,而是在方法内部判断一旦问题就立刻返回,了这些准备工作,我们就可以把原本穿插在业务逻辑中间错误判断提出来放到最后来统一调用,从而在视觉上保证让人可以直观看出代码本来意图是什么。...io.Writer,并且封装了 error,同时重写了 Writer 方法,虽然方法签名中仍然返回值 error,但是我们单独保存了一份 error,并且在方法内部判断一旦问题就立刻返回,了这些准备工作...类似的做法在 Golang 标准中屡见不鲜,让我们继续看看 Eliminate error handling by eliminating errors 中提到一个关于 bufio.Reader 和...通过对以上几个例子分析,我们可以得出优化重复错误处理大概套路:通过创建新类型来封装原本干脏活累活旧类型,同时在新类型中封装 error,新旧类型方法签名可以保持兼容,也可以不兼容,这个不是关键

    2.1K20

    为什么文件名必须和public修饰类名称必须一致

    将类名与文件名一一对应就可以方便虚拟机 在相应路径(包名)中找到相应信息。如果不这么的话,就很难去找,而且开销也会很大。...这么意思是,每个编译单元只能有一个公开接口,而这个接口就由其public类来表示。而非public修饰类都是为了给public修饰类所做支撑,从软件架构设计和安全性设计上得出结论。...而且在编译单元内部,可以一个公共(public)类,它必须拥有与文件相同名字(包括大小写形式,但排除.java 文件扩展名)。如果不这样,编译器就会报告出错。...因此,我们最终从少量.java 文件里可能获得数量众多.class 文件。...如以前用一种汇编语言写过程序,那么可能已习惯编译器先分割出一种过渡形式(通常是一个.obj 文件),再用一个链接器将其与其他东西封装到一起(生成一个可执行文件),或者与一个封装到一起(生成一个)。

    1.9K30

    后端Api设计一些注意项

    数据保护 数据保护好不好,两个原则来验证: 第一,可以控制让谁来读取数据, 对于任何一个Api项目其实就是只允许产品App本身访问,这就需要用密文传输请求数据,做到即使被人用抓包工具抓到请求数据也没有办法解析出参数意义...密文安全性取决于参数加密方式,使用对称加密、非对称加密或者两者结合取决于团队自己选择,当然如果接口域名已经配了证书支持https,就不用自己写代码来这些事情了。...第二,对于可以获取数据端,也可以控制其可以获取哪些数据 既然客户端不能做到完全可靠,那就让服务端多承担一些任务,在app启动时或者用户登录时服务端先向每个客户端分发一个固定有效期secret,并且在服务端数据中存储客户端唯一标示或者...要封装到下面的逻辑层,这样Action只需要在主业务基础上根据需求进行扩展。...尽可能把所有业务逻辑都放到服务端 很容易理解,服务端不用发版,服务端没有处理不了问题,很简单一个例子:用户登录功能,会有"密码错误","还没有注册"等各种异常情况提示。

    95730

    什么是jQuery?

    Jquey就是一款跨主流浏览器JavaScript,简化JavaScript对HTML操作 就是封装了JavaScript,能够简化我们写代码一个JavaScript 为什么要使用Jquery?...不是将所有JS全部封装,只是选择封装 (4)能够处理HTML/JSP/XML、CSS、DOM、事件、实现动画效果,也能提供异步AJAX功能 (5)文档手册很全,很详细 (6)成熟插件可供选择 (7...() 我们发现,JavaScript方法名太长了,不易于书写代码…… 封装优化 这些方法名太长了,获取ID属性、NAME属性、标签名属性控件也用不着三个方法,我们定义下规则就好了 传入参数是"#"...号开头字符串,那么就是id属性 传入参数是没有"#"号开头字符串,也没有前缀修饰字符串就是标签名属性 到这里,我们就可以根据传入参数判断它是获取ID属性控件还是标签名控件了。...Jquery关于DOMAPI 前面使用Jquery选择器来获取到了HTML标签,单纯得到标签是没有用

    3K70

    这个Python把Selenium按在地上摩擦!

    背景 用 requests 数据采集面对要登录网站时,要分析数据包、JS 源码,构造复杂请求,往往还要应付验证码、JS 混淆、签名参数等反爬手段,门槛较高,开发效率不高。...除了合并两者,本还以网页为单位封装了常用功能,提供非常简便操作和语句,使用户可减少考虑细节,专注功能实现。以简单方式实现强大功能,使代码更优雅。...核心能力 本采用全自研内核,内置了 N 多实用功能,对常用功能作了整合和优化,对比 selenium,以下优点: 无 webdriver 特征 无需为不同版本浏览器下载不同驱动 运行速度更快...顾名思义,SessionPage是一个使用使用Session(requests )对象页面,它使用 POM 模式封装了网络连接和 html 解析功能,使收发数据包也可以像操作页面一样便利。...我们看个简单例子,来了解SessionPage工作方式。

    19910

    DrissionPage,一个比Selenium好玩太多Python

    背景 用 requests 数据采集面对要登录网站时,要分析数据包、JS 源码,构造复杂请求,往往还要应付验证码、JS 混淆、签名参数等反爬手段,门槛较高,开发效率不高。...除了合并两者,本还以网页为单位封装了常用功能,提供非常简便操作和语句,使用户可减少考虑细节,专注功能实现。以简单方式实现强大功能,使代码更优雅。...核心能力 本采用全自研内核,内置了 N 多实用功能,对常用功能作了整合和优化,对比 selenium,以下优点: 无 webdriver 特征 无需为不同版本浏览器下载不同驱动 运行速度更快...顾名思义,SessionPage是一个使用使用Session(requests )对象页面,它使用 POM 模式封装了网络连接和 html 解析功能,使收发数据包也可以像操作页面一样便利。...我们看个简单例子,来了解SessionPage工作方式。

    1.5K10

    一文读懂 JAVA 异常处理

    若 finally 中也包含 return 语句,finally 中 return 会覆盖前面的 return. try-with-resource 上面例子中,finally 中 close 方法也可能抛出...阿里巴巴异常处理规约 【强制】 Java 类中定义可以通过预检查方式规避 RuntimeException 异常不应该通过 catch 方式来处理,比如: NullPointerException...2) 数据查询结果可能为 null。 3) 集合里元素即使 isNotEmpty,取出数据元素也可能为 null。 4) 远程调用返回对象时,一律要求进行空指针判断,防止 NPE。...一般一场如果没有 try-catch,且方法签名中也没有用 throws 关键字声明可能抛出异常,则编译无法通过。这类异常通常为应用环境中错误,即外部错误,非应用程序本身错误,如文件找不到等。...常见 RuntimeException 哪些?

    1K20

    Hyperledger Fabric基础之账本

    World State World state如上所述,程序和应用更多时候需要获取账本当前状态值。 ? 上面的例子, 两个车, 第一个车CAR1(key值/键值), 它值是Audi。...(1) 头部 即上图H4, 包含交易必要元数据,例如对应链码和版本等。 (2) Sinature签名 上图S4, 由客户端应用创建,使用客户私钥签名。...(3) Proposal 提议 上图P4, 封装了应用提供给链码使用输入参数,链码执行,使用这些入参, 与现有world state一起使用,就能计算出新world state. (4) 响应 R4...基础完结, 后面我们会通过Hyperledger Fabric入门例子, 实际操作和配置, 使用Go和Nodejs编写联链码。...再之后估计就是学下更方便些Hyperledger Composer方式去开发部署区块链。 但是相信了前面这些核心基础知识, 后面的学习会相对简单很多。

    93800

    Java设计模式之装饰模式

    装饰模式在中国使用那实在是多,中国文化是中庸文化,说话或做事情都不能太直接,需要有技巧,比如说话吧,你要批评一个人,你不能一上来就说你这个不对,那个不对,你要先肯定他成绩,表扬一下优点,...拿一个旧手机线路板,找个新外壳、屏幕、包装就成了新手机,装饰模式害人不浅呀! 我们不说不开心事情,今天举一个什么例子呢?就说说我上小学糗事吧。...哈哈,幸运是,这个不是当时真实情况,我没有直接把成绩单交给老爸,而是在交给他之前做了点技术工作,我要把成绩单封装一下,封装分类两步走: 第一步:跟老爸说各个科目的最高分,语文最高是75,数学是78,...这还是一个比较简单场景,一旦需要装饰条件非常多,比如20个,你还通过继承来解决,你想想子类多少个?你是不是马上就要崩溃了!...SchoolReport子类,怎么封装

    1.8K10

    C# dotnet 创建对象附加属性定义 支持附加任意类型

    给任意对象附加任意属性 和大家介绍了 dotnetCampus.ClrAttachedProperty 一般用法,而本文就来告诉大家如何定制和 WPF 一样功能附加属性 没有用过 WPF 小伙伴也没关系...,因为用过 WPF 小伙伴应该是看到 API 就瞬间明白用法和优势,没有用过 WPF 小伙伴就先来听听我吹一下 附加属性什么用?...附加属性可以是某个业务附加都某些对象上业务属性,这些业务属性仅在此业务中生效 实际例子如下,假设 人 具有以下属性定义 名字 性别 但是此时银行部门期望给 人 添加一个业务属性,就是银行卡属性。...而如果这个 人 依然还在浪,那么就期望银行卡属性不要被回收 刚好 WPF 附加属性重点就是这个事情,而 dotnetCampus.ClrAttachedProperty 就是对此过程封装,提供了...这个提供了两个不同版本 NuGet ,其中一个包是传统 Dll 引用包。

    81510

    vscode 搭建原生Android原生开发环境

    以前Android项目好久没有用了,开发工具也卸载了,现在想重新跑起来又不想装Android Studio,因此尝试使用vscode来重新跑起来。...在运行此命令时,keytool会提示你输入密钥和密钥密码,以及你姓名、组织单位、组织、所在城市或地区、所在州或省份以及国家代码。这些信息将用于在签名过程中标识你密钥。...确保文件位于你项目可以访问位置(如项目的根目录或特定配置目录)。 保护你密钥: 记住,你.jks文件包含用于签名Android应用私钥。...如果你丢失了这个文件或密码,你将无法更新你应用签名,这可能导致用户无法安装新版本应用作为更新。...以下是一个简化例子,展示了如何在应用build.gradle文件中配置签名: 创建新项目: 打开VSCode,选择“文件”>“新建文件夹”,并为你项目创建一个新文件夹。

    1.5K11
    领券