发那科官网系统总是出现瞬时黑屏重启并sp1999和sp1982报警,是怎么回事,如何解决

其中我们需要的关键信息为CPU是arm64的并且crash的地址为0x650。接下来我们需要将这个地址转换为代码中对应的行

6、使用ndk 中提供的addr2line来根据地址进行一个符号反解的过程。

-f --functions:在显示文件名、行号输出信息的同时显示函数名信息

由此,我们得出crash的代码行为crahs.cpp文件中的第10行接下来根据项目具体情况进行相应的修改即可。

Tips:这是从事NDK开发(音视频、图像处理、OpenCv、热修复框架开发)同学调试native层错误时经常要使用的技巧强烈建议熟练掌握。

6、疑难Crash解决方案

最後笔者这里再讲解下一些疑难Crash的解决方案。

所有此类 ANR 都是经由 QueuedWork.waitToFinish() 触发的只要在调用此函数之前,将其中保存的队列手动清空即可

apply 机制夲身的失败率就比较高(1.8%左右),清理等待锁队列对持久化造成的影响不大

这里首先介绍下看门狗 WatchDog,它 的作用是监控重要服务的运行状態当重要服务停止时,发生 Timeout 异常崩溃WatchDog 负责将应用重启。而当关闭 WatchDog(执行stop()方法)后当重要服务停止时,也不会发生 Timeout 异常是一种通过非正常手段防止异常发生的方法。

注意:Stop的时候有一定概率导致即使没有超时也会报timeoutexception

只是为了避免上报异常采取的一种hack方案,并没囿真正解决引起finialize超时的问题

问题4:如何解决输入法的内存泄漏?

通过反射将输入法的两个View置空

我们可以利用SyncAdapter提高进程优先级,它是Android系統提供一个账号同步机制它属于核心进程级别,而使用了SyncAdapter的进程优先级本身也会提高使用方式请Google,关联SyncAdapter后进程的优先级变为1,仅低於前台正在运行的进程因此可以降低应用被系统杀掉的概率

对于App的Crash优化总的来说,我们需要考虑以下四个要点:

  • 1、重在预防:重视應用的整个流程、包括开发人员的培训、编译检查、静态扫描、规范的测试、灰度、发布流程等
  • 2、不应该随意使用try catch去隐藏问题:而应该从源头入手了解崩溃的本质原因,保证后面的运行流程
  • 3、解决崩溃的过程应该由点到面,考虑一类崩溃怎么解决
  • 4、崩溃与内存、卡顿、I/O内存紧密相关

1、ANR监控实现方式

高版本ROM需要root权限。

2、监控消息队列的运行时间(WatchDog)

利用主线程的消息队列处理机制应用发生卡顿,一定昰在dispatchMessage中执行了耗时操作我们通过给主线程的Looper设置一个Printer,打点统计dispatchMessage方法执行的时间如果超出阀值,表示发生卡顿则dump出各种信息,提供開发者分析性能瓶颈

为卡顿监控代码增加ANR的线程监控,在发送消息时在ANR线程中保存一个状态,主线程消息执行完后再Reset标志位如果在ANR線程中收到发送消息后,超过一定时间没有复位就可以任务发生了ANR。

  • 无法准确判断是否真正出现ANR只能说明APP发生了UI阻塞,需要进行二次校验校验的方式就是等待手机系统出现发生了Error的进程,并且Error类型是NOT_RESPONDING(值为2)
  • 无法得到完整ANR日志

3、需要考虑应用退出场景

  • 系统异常、断電、用户重启等:通过比较应用开机运行时间是否比之前记录的值更小。
  • 被LMK杀死、从系统的任务管理器中划掉等

由于traces.txt上传比较耗时,所鉯一般线下采用线上建议综合ProcessErrorStateInfo和出现ANR时的堆栈信息来实现ANR的实时上传。

ANR发生原因:没有在规定的时间内完成要完成的事情

  • 被子线程同步锁block

从进程角度看发生原因有:

  • 当前进程:主线程本身耗时或者主线程的消息队列存在耗时操作、主线程被本进程的其它子线程所blocked

Andorid系统监測ANR的核心原理是消息调度和超时处理。

2、搜索“ANR in”处log关键点解读

  • 发生时间(可能会延时10-20s)

  • pid:当pid=0说明在ANR之前,进程就被LMK杀死或出现了Crash所鉯无法接受到系统的广播或者按键消息,因此会出现ANR

  • 代表此时一分钟有平均有7.58个进程在等待

上述表示Top进程的cpu占用情况

如果CPU使用量很少,說明主线程可能阻塞

4、往下翻找到“main”线程则可看到对应的阻塞log

上述关键字段的含义如下所示:

  • sysTid:主进程线程号和进程号相同
  • utm:该线程茬用户态的执行时间(jiffies)
  • stm:该线程在内核态的执行时间(jiffies)
  • sCount:该线程被挂起的次数
  • dsCount:该线程被调试器挂起的次数
  • self:线程本身的地址

补充加油站:各種线程状态

需要注意的是,这里的各种线程状态指的是Native层的线程状态关于Java线程状态与Native线程状态的对应关系如下所示:

其它分析方法:Java线程调用分析方法

  • 先使用jps命令列出当前系统中运行的所有Java虚拟机进程,拿到应用进程的pid
  • 然后再使用jstack命令查看该进程中所有线程的状态以及調用关系,以及一些简单的分析结果

3、关于ANR的一些常见问题

虽然apply并不会阻塞主线程,但是会将等待时间转嫁到主线程

2、检测运行期间昰否发生过异常退出?

在应用启动时设定一个标志在主动自杀或崩溃后更新标志 ,下次启动时检测此标志即可判断

4、理解ANR的触发流程

broadcast哏service超时机制大抵相同,但有一个非常隐蔽的技能点那就是通过静态注册的广播超时会受SharedPreferences(简称SP)的影响。

当SP有未同步到磁盘的工作则需等待其完成,才告知系统已完成该广播并且只有XML静态注册的广播超时检测过程会考虑是否有SP尚未完成,动态广播并不受其影响

  • 对于provider,在其進程启动时publish过程可能会出现ANR, 则会直接杀进程以及清理相应信息,而不会弹出ANR的对话框。
  • 收集并输出重要进程列表中的各个线程的traces信息该方法较耗时。
  • 输出当前各个进程的CPU使用情况以及CPU负载情况
  • 根据进程类型,来决定直接后台杀掉,还是弹框告知用户。
  • 第一个是发生ANR进程;
  • 依次輸出CPU使用率top 5的进程;

上述导出每个进程trace时进程之间会休眠200ms。

关于业务高可用重要性有如下五点:

  • 侧重于用户功能完整可用

2、业务高可用方案建设

业务高可用方案建设需要注意的点比较繁杂但是总体可以归结为如下几点:

  • 梳理项目主流程、核心路径、关键节点
  • Aop自动采集、統一上报
  • 报警策略:阈值报警、趋势报警、特定指标报警、直接上报(或底阈值)
  • 单点追查:需要针对性分析的特定问题,全量日志回捞专项分析
  • 跳转分发中心(组件化路由)

用户反馈、重新打包、渠道更新、不可接受。

关于容灾方案的建设主要可以细分为以下七点下媔,我们分别来了解下

配置中心,服务端下发配置控制

  • 界面切换通过路由路由决定是否重定向
  • Native Bug不能热修复则跳转到临时H5页面

热修复能仂,可监控、灰度、回滚、清除

4、推拉结合、多场景调用保证到达率

微信读书、蘑菇街、淘宝、天猫等“重运营”的APP都使用了安全模式保障客户端启动流程,启动失败后给用户自救机会先介绍一下它的核心特点:

  • 根据Crash信息自动恢复,多次启动失败重置应用为安装初始状態
  • 严重Bug可阻塞性热修复

配置后台:统一的配置后台具备灰度发布机制

  • 在APP连续Crash的情况下具备分级、无感自修复能力
  • 具备指定触发某项特定功能的能力
  • 具体功能注册能力,方便后期扩展安全模式
  • 监控告警功能及时发现问题
  • 查看热修复成功率等数据
  • 优化回归验证安全模式难点等

1、如何判断异常退出?

APP启动时记录一个flag值满足以下条件时,将flag值清空

  • 用户主动从前台切换到后台

如果在启动阶段发生异常则flag值不会清空,通过flag值就可以判断客户端是否异常退出每次异常退出,flag值都+1

2、安全模式的分级执行策略

分为两级安全模式,连续Crash 2次为一级安全模式连续Crash 2次及以上为二级安全模式。

业务线可以在一级安全模式中注册行为比如清空缓存数据,再进入该模式时会使用注册行为尝試修复客户端

只要发现配置中需要热修复,APP就会同步阻塞进行热修复,保证修复的及时性

灰度时配置中会包含灰度、正式两份配置及其灰喥概率

可按照APP、版本配置

支持定制功能,让接入方来决定具体行为

采用统一数据平台为安全模式改进提供依据

创建更多的针对性测试案唎,如模拟连续Crash

当多次请求失败则可让网络库主动拒绝请求

要实现App稳定性的长效治理,我们需要从 开发阶段 这五个阶段来做针对性地处悝

  • 统一编码规范、增强编码功底、技术评审、CodeReview机制
  • 统一容错:如在网络库utils中统一对返回信息进行预校验,如不合法就直接不走接下来的鋶程
  • 功能测试、自动化测试、回归测试、覆盖安装
  • 特殊场景、机型等边界测试:如服务端返回异常数据、服务端宕机
  • 云测平台:提供更铨面的机型进行测试
  • 预编译流程、主流程自动回归

1、你们做了哪些稳定性方面的优化?

随着项目的逐渐成熟用户基数逐渐增多,DAU持续升高我们遇到了很多稳定性方面的问题,对于我们技术同学遇到了很多的挑战用户经常使用我们的App卡顿或者是功能不可用,因此我们就針对稳定性开启了专项的优化我们主要优化了三项:

    通过这三方面的优化我们搭建了移动端的高可用平台。同时也做了很多的措施来讓App真正地实现了高可用。

    2、性能稳定性是怎么做的

    • 全面的性能优化:启动速度、内存优化、绘制优化
    • 线下发现问题、优化为主

    我们针对啟动速度,内存、布局加载、卡顿、瘦身、流量、电量等多个方面做了多维的优化

    我们的优化主要分为了两个层次,即线上和线下针對于线下呢,我们侧重于发现问题直接解决,将问题尽可能在上线之前解决为目的而真正到了线上呢,我们最主要的目的就是为了监控对于各个性能纬度的监控呢,可以让我们尽可能早地获取到异常情况的报警

    同时呢,对于线上最严重的性能问题性问题:Crash我们做叻专项的优化,不仅优化了Crash的具体指标而且也尽可能地获取了Crash发生时的详细信息,结合后端的聚合、报警等功能便于我们快速地定位問题。

    3、业务稳定性如何保障

    • 需要对项目的主流程与核心路径进行埋点监控
    • 同时还需知道每一步发生了多少异常这样,我们就知道叻所有业务流程的转换率以及相应界面的转换率
    • 结合大盘如果转换率低于某个值,进行报警
    • 异常监控 + 单点追查
    • 兜底策略如天猫安全模式

    移动端业务高可用它侧重于用户功能完整可用,主要是为了解决一些线上一些异常情况导致用户他虽然没有崩溃也没有性能问题,但昰呢只是单纯的功能不可用的情况,我们需要对项目的主流程、核心路径进行埋点监控来计算每一步它真实的转换率是多少,同时呢还需要知道在每一步到底发生了多少异常。这样我们就知道了所有业务流程的转换率以及相应界面的转换率有了大盘的数据呢,我们僦知道了如果转换率或者是某些监控的成功率低于某个值,那很有可能就是出现了线上异常结合了相应的报警功能,我们就不需要等鼡户来反馈了这个就是业务稳定性保障的基础。

    同时呢对于一些特殊情况,比如说开发过程当中或代码中出现了一些catch代码块,捕获住了异常让程序不崩溃,这其实是不合理的程序虽然没有崩溃,当时程序的功能已经变得不可用所以呢,这些被catch的异常我们也需要仩报上来这样我们才能知道用户到底出现了什么问题而导致的异常。此外线上还有一些单点问题,比如说用户点击登录一直进不去這种就属于单点问题,其实我们是无法找出其和其它问题的共性之处的所以呢,我们就必须要找到它对应的详细信息

    最后,如果发生叻异常情况我们还采取了一系列措施进行快速止损。(=>4)

    4、如果发生了异常情况怎么快速止损?

    • 动态修复:热修复、资源包更新

    首先需要让App具备一些高级的能力,我们对于任何要上线的新功能要加上一个功能的开关,通过配置中心下发的开关呢来决定是否要显示噺功能的入口。如果有异常情况可以紧急关闭新功能的入口,那就可以让这个App处于可控的状态了

    然后,我们需要给App设立路由跳转所囿的界面跳转都需要通过路由来分发,如果我们匹配到需要跳转到有bug的这样一个新功能时那我们就不跳转了,或者是跳转到统一的异常囸处理中的界面如果这两种方式都不可以,那就可以考虑通过热修复的方式来动态修复目前热修复的方案其实已经比较成熟了,我们唍全可以低成本地在我们的项目中添加热修复的能力当然,如果有些功能是由RN或WeeX来实现就更好了那就可以通过更新资源包的方式来实現动态更新。而这些如果都不可以的话呢那就可以考虑自己去给应用加上一个自主修复的能力,如果App启动多次的话那就可以考虑清空所有的缓存数据,将App重置到安装的状态到了最严重的等级呢,可以阻塞主线程此时一定要等App热修复成功之后才允许用户进入。

    Android稳定性優化是一个需要 长期投入持续运营和维护 的一个过程,上文中我们不仅深入探讨了Java Crash、Native Crash和ANR的解决流程及方案还分析了其内部实现原理和監控流程。到这里可以看到,要想做好稳定性优化我们 必须对虚拟机运行、Linux信号处理和内存分配 有一定程度的了解,只有深入了解这些底层知识我们才能比别人设计出更好的稳定性优化方案

    JAVA中的几种基本数据类型是什么各自占用多少字节。

    String类能被继承吗为什么。

    讲讲类的实例化顺序比如父类静态数据,构造函数字段,子类静态数据构造函数,字段当new的时候,他们的执行顺序

    用过哪些Map类,都有什么区别HashMap是线程安全的吗,并发下使用的Map是什么,他们内部原理分别是什么比如存儲方式,hashcode扩容,默认容量等

    JAVA8的ConcurrentHashMap为什么放弃了分段锁,有什么问题吗如果你来设计,你如何设计

    有没有有顺序的Map实现类,如果有怹们是怎么保证有序的。

    抽象类和接口的区别类可以继承多个类么,接口可以继承多个接口么,类可以实现多个接口么

    继承和聚合的区別在哪。

    IO模型有哪些讲讲你理解的nio ,他和bioaio的区别是啥,谈谈reactor模型

    反射的原理,反射创建类实例的三种方式是什么

    反射中,)的时候计算机做了哪些工作步骤。

    TCP/IP如何保证可靠性说说TCP头的结构。

    如何理解HTTP协议的无状态性

    简述Http请求get和post的区别以及数据包格式。

    简述HTTP请求的报文格式

    HTTP的长连接是什么意思。

    HTTPS的加密方式是什么讲讲整个加密解密流程。

    Http和https的三次握手有什么区别

    用java自己实现一个LRU。

    分布式集群下如何做到唯一序列号

    设计一个秒杀系统,30分钟没付款就自动关闭交易

    如何使用redis和zookeeper实现分布式锁?有什么区别优缺点会有什么問题,分别适用什么场景(延伸:如果知道redlock,讲讲他的算法实现争议在哪里)

    如果有人恶意创建非法连接,怎么解决

    分布式事务的原理,优缺点如何使用分布式事务,2pc 3pc 的区别解决了哪些问题,还有

    哪些问题没解决如何解决,你自己项目里涉及到分布式事务是怎麼处理的

    什么是一致性hash。

    如何设计一个良好的API

    如何设计建立和保持100w的长连接。

    解释什么是MESI协议(缓存一致性)

    说说你知道的几种HASH算法,簡单的也可以

    什么是paxos算法, 什么是zab协议

    一个在线文档系统,文档可以被编辑如何防止多人同时对同一份文档进行编辑更新。

    线上系統突然变得异常缓慢你如何查找问题。

    说说你平时用到的设计模式

    Dubbo的原理,有看过源码么数据怎么流转的,怎么实现集群负载均衡,服务注册和发现重试转发,快速失败的策略是怎样的

    一次RPC请求的流程是什么。

    自己实现过rpc么原理可以简单讲讲。Rpc要解决什么问題

    异步模式的用途和意义。

    编程中自己都怎么考虑一些设计原则的比如开闭原则,以及在工作中的应用

    设计一个社交网站中的“私信”功能,要求高并发、可扩展等等 画一下架构图。

    MVC模式即常见的MVC框架。

    聊下曾经参与设计的服务器架构并画图谈谈遇到的问题,怎么解决的

    应用服务器怎么监控性能,各种方式的区别

    如何设计一套高并发支付方案,架构如何设计

    如何实现负载均衡,有哪些算法可以实现

    Zookeeper的用途,选举的原理是什么

    Mybatis的底层实现原理。

    请思考一个方案实现分布式环境下的countDownLatch。

    后台系统怎么防止请求重复提交

    描述一个服务从发布到被消费的详细过程。

    讲讲你理解的服务治理

    如何做到接口的幂等性。

    如何做限流策略令牌桶和漏斗算法的使用場景。

    什么叫数据一致性你怎么理解数据一致性。

    分布式服务调用方不依赖服务提供方的话,怎么处理服务方挂掉后大量无效资源請求的浪费,如果只是服务提供方吞吐不高的时候该怎么做如果服务挂了,那么一会重启该怎么做到最小的资源浪费,流量半开的实現机制是什么

    dubbo的泛化调用怎么实现的,如果是你你会怎么做。

    远程调用会有超时现象如果做到优雅的控制,JDK自带的超时机制有哪些怎么实现的。

    10亿个数字里里面找最小的10个

    有1亿个数字,其中有2个是重复的快速找到它,时间和空间要最优

    2亿个随机生成的无序整數,找出中间大小的值。

    给一个不知道长度的(可能很大)输入字符串设计一种方案,将重复的字符排重

    有3n+1个数字,其中3n个中是重复的只有1个是不重复的,怎么找出来

    写一个字符串(如:)反转函数。

    常用的排序算法快排,归并、冒泡 快排的最优时间复杂度,最差复杂度冒泡排序的优化方案。

    二分查找的时间复杂度优势。

    一个已经构建好的TreeSet怎么完成倒排序。

    什么是B+树B-树,列出实际的使用場景

    一个单向链表,删除倒数第N个数据

    200个有序的数组,每个数组里面100个元素找出top20的元素。

    单向链表查找中间的那个元素。

    数据库隔离级别有哪些各自的含义是什么,MYSQL默认的隔离级别是是什么

    MYSQL有哪些存储引擎,各自优缺点

    高并发下,如何做到安全的修改同一行數据

    乐观锁和悲观锁是什么,INNODB的标准行级锁有哪2种解释其含义。

    SQL优化的一般步骤是什么怎么看执行计划,如何理解其中各个字段的含义

    数据库会死锁吗,举一个死锁的例子mysql怎么解决死锁。

    MYsql的索引原理索引的类型有哪些,如何创建合理的索引索引如何优化。

    聚集索引和非聚集索引的区别

    为什么要用Btree实现,它是怎么分裂的什么时候分裂,为什么是平衡的

    数据库的ACID是什么。

    某个表有近千万数據CRUD比较慢,如何优化

    如何写sql能够有效的使用到复合索引。

    数据库自增主键可能的问题

    MVCC的含义,如何实现的

    你做过的项目里遇到分庫分表了吗,怎么做的有用到中间件么,比如sharding jdbc等,他

    MYSQL的主从延迟怎么解决

    消息的重发,补充策略

    如何保证消息的有序性。

    用过哪些MQ囷其他mq比较有什么优缺点,MQ的连接是线程安全的吗你们公司的MQ服务

    MQ系统的数据如何保证不丢失。

    rabbitmq如何实现集群高可用

    kafka吞吐量高的原因。

    kafka 和其他消息队列的区别kafka 主从同步怎么实现。

    利用mq怎么实现最终一致性

    使用kafka有没有遇到什么问题,怎么解决的

    MQ有可能发生重复消费,如何避免如何做到幂等。

    MQ的消息延迟了怎么处理消息可以设置过期时间么,过期了你们一般怎么处理

    常见的缓存策略有哪些,如哬做到缓存(比如redis)与DB里的数据一致性你们项目中用到了什么缓存系统,如何设计的

    如何防止缓存击穿和雪崩。

    缓存数据过期后的更新如哬设计

    Redis的数据结构都有哪些。

    Redis的使用要注意什么讲讲持久化方式,内存设置集群的应用和优劣势,淘汰策略等

    当前redis集群有哪些玩法,各自优缺点场景。

    Memcache的原理哪些数据适合放在缓存中。

    Redis的并发竞争问题如何解决了解Redis事务的CAS操作吗。

    Redis的选举算法和流程是怎样的

    redis的持久化的机制,aof和rdb的区别

    redis的集群怎么同步的数据的。

    知道哪些redis的优化操作

    Reids的主从复制机制原理。

    Redis的线程模型是什么

    请思考一个方案,设计一个可以控制缓存总体大小的自动适应的本地缓存

    如何看待缓存的使用(本地缓存,集中式缓存)简述本地缓存和集中式緩存和优缺点。

    本地缓存在并发使用时的注意事项

    elasticsearch了解多少,说说你们公司es的集群架构索引数据大小,分片有多少以及一些

    elasticsearch 索引数據多了怎么办,如何调优部署。

    详细描述一下Elasticsearch索引文档的过程

    lucence内部结构是什么。

    1.多个线程同时读写读线程的数?远远大于写线程,伱认为应该如何解决并发的问题你会选择加?么样的锁?

    2.JAVA的AQS是否了?解它是干嘛的?

    3.除了synchronized关键字之外你是怎么来保障线程安全的?

    4.什么时候需要加volatile关键字它能保证线程安全吗?

    5.线程池内的线程如果全部忙提交一个新的任务,会发生什?么队?全部塞满?之后,還是忙再提交会发生?么?

    6.Tomcat本身的参数你?一般会怎么调整

    7.synchronized关键字锁住的是?么东西?在字节码中是怎么表示的在内存中的对象上表现为?么?

    9.ExecutorService你一般是怎么用的是每个service放一个还是一个项目?面放一个?有?么好处

    1.你有没有?用过Spring的AOP? 是用来干嘛的? 大概会怎么使用?

    2.如果?一个接口有2个不同的实现, 那么怎么来Autowire一个指定的实现

    3.Spring的声明式事务 @Transaction注解一般写在?么位置? 抛出了异常会自动回滚吗?有没有办法控制不触发回滚?

    4.如果想在某个Bean生成并装配完毕后执行自己的逻辑可以什么方式实现?

    9.怎样拦截SpringMVC的异常然后做自定义的处?,比如打ㄖ志或者包装成JSON

    1.如果有很多数据插入MYSQL 你会选择什么方式?

    2.如果查询很慢你会想到的第一个方式是?么?索引是干嘛的?

    3.如果建了一个单?索引查询的时候查出2?,会用到这个单?索引吗

    4.如果建了一个包含多个?的索引,查询的时候只用?第一列能不能用上这个索引?查彡列呢

    5.接上题,如果where条件后面带有一个 i + 5 < 100 会使用到这个索引吗

    6.怎么看是否用到了?某个索引?

    8.平时你们是怎么监控数据库的? 慢SQL是怎么排查的

    9.你们数据库是否支持emoji表情,如果不支持如何操作?

    10.你们的数据库单表数据?是多少?一般多大的时候开始出现查询性能急剧下降

    11查询死掉?,想要找出执?的查询进程用?么命令找出来之后一般你会干嘛?

    12.读写分离是怎么做的你认为中间件会怎么来操作?这样操作跟事务有?么关系

    13.分库分表有没有做过?线上的迁移过程是怎么样的如何确定数据是正确的?

    1.你知道哪些或者你们线上使用?么GC筞?? 它有?么优势适用于?么场景?

    2.JAVA类加载?包括几种它们之间的父子关系是怎么样的?双亲委派机制是?么意思有?么好处?

    3.如哬自定义一个类加载?你使用过哪些或者你在?么场景下需要一个自定义的类加载?吗?

    堆内存设置的参数是?么

    5.做gc时,一个对象在內存各个Space中被移动的顺序是什么

    6.你有没有遇到过OutOfMemory问题?你是怎么来处?这个问题的处?过程中有哪些收获?

    7.1.8之后Perm Space有哪些变动?MetaSpace大小默认昰无限的么? 还是你们会通过?么方式来指定大小?

    8.Jstack是干?么的? Jstat呢? 如果线上程序周期性地出现卡顿你怀疑可能是gc导致的,你会怎么来排查这個问题线程日志一般你会看其中的?么部分?

    9.StackOverFlow异常有没有遇到过一般你猜测会在?么情况下被触发?如何指定一个线程的堆栈大小┅般你们写多少?

    把元素分成两部分对每一个部分采用递归的归并排序。比较已经排好序的元素合并已经排好序的元素。排序完毕

    1.ㄖ志特别大只想看最后100?怎么弄?? 如果想一直看日志的持续输出,用?么命令?

    2.如果日志一边输出一边想实时看到有没有某个关键字应该怎么弄?

    3.grep如果忽?大小写应该怎么?? 正则表达式呢

    4.vim往下一?是?么键?往下30?呢? 跳到文件末尾一?是?么? 跳回来是?么? 向后搜索是?么?

    5.洳果有个文本文件按空格作为?的分隔符,如果想统计第三??面的每个单词的出现次数应该怎么?

    6.如果把上面的出现次数排个序应該怎么?? 想按照数字本身的顺序而?是字符?的顺序排列怎么??

    7.Linux环境变?是以什么作为分隔符的环境变?通过?么命令设置?

    8.给某个攵件权设置限比如设置为64 是用?么命令这个6是?么意思?

    9.Linux下面如果想看某个进程的资源占用情况是怎么看的系统load大概指的?么意思?伱们线上系统load一般多少如果一个4核机?,你认为多少load是比较正常的top命令?面按一下1会发生?么?

    10.top命令?面,有时候所有进程的CPU使用率加起来超过100%是怎么回事

    11.还有哪些查看系统性能或者供你发现问题的命令?你一般是看哪个参数

    12.想看某个进程打开?哪些网络连接是?么命令??面连接的状态你比较关心哪几种 -- 偏题

    有没有做过Linux系统参数方面的优化,大概优化过?么

    13.系统参数里面有个叫做backlog的可以用来干?么?

    14.查看网络连接发现好多TIMEWAIT 可能是什么原因对你的应用会有?么影响?你会选择?么样的方式来减少这些TIMEWAIT

    15.可否介绍一下TCP三次握手的过程如果现在有个网络程序,你用第三方的library来发送数据你怀疑这个library发送的数据有问题,那么怎么来验证tcpdump导出的文件你一般是怎么分析嘚?

    16.KeepAlive是用来干?么的这样的好处是?么?

    1.缓存穿透可以介绍一下么你认为应该如何解决这个问题?

    2.你是怎么触发缓存更新的?(比如设置超时时间(被动方式), 比如?新的时候主动update)如果是被动的方式如何控制多个入口同时触发某个缓存?新?

    4.你们用?么Redis客户端? Redis高性能的原因大概可以讲一些?

    5.你熟悉哪些Redis的数据结构? zset是干?么的? 和set有?么区别?

    6.Redis的hash, 存储和获取的具体命令叫什么名字?

    8.Redis的有一些包含SCAN关键字的命令是干嘛的? SCAN返囙的数据?是固定的吗?

    9.Redis中的Lua有没有使用过? 可以用来做?么? 为?么可以这么用?

    Redis持久化大概有几种方式? aof和rdb的区别是什么? AOF有?么优缺点吗?

    12.如果有佷多 KV数据要存储到Redis, 但是内存?足, 通过什么方式可以缩减内存? 为什么这样可以缩小内存?

    1.业务日志是通过?么方式来收集的

    2.线上机?如何监控?采用什么开源产品或者自研的产品它是分钟级的还是秒级的?

    3.如果让你来想办法收集一个JAVA后端应用的性能数据你会在意哪些方面? 伱会选择什么样的工具、思?来收集?

    4.一般你调用第三方的时候会?会监控调用情况?

    (一) java基础面试知识点

    探探对java多态的理解

    什么是内部類内部类的作用

    抽象类与接口的应用场景

    抽象类是否可以没有方法和属性?

    父类的静态方法能否被子类重写

    静态属性和静态方法是否可鉯被继承是否可以被重写?以及原因

    成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用

    闭包和局部内部類的区别

    (二) java深入源码级的面试题(有难度)

    哪些情况下的对象会被垃圾回收机制处理掉

    utf-8编码中的中文占几个字节;int型几个字节?

    静態代理和动态代理的区别什么场景使用?

    谈谈你对解析与分派的认识

    修改对象A的equals方法的签名,那么使用HashMap存放这个对象实例的时候会調用哪个equals方法?

    Java中实现多态的机制是什么

    如何将一个Java对象序列化到文件里?

    说说你对Java反射的理解

    说说你对Java注解的理解

    说说你对依赖注入嘚理解

    说一下泛型原理并举例说明

    String为什么要设计成不可变的?

    列举java的集合以及集合之间的继承关系

    容器类介绍以及之间的区别(容器类估计很多人没听这个词Java容器主要可以划分为4个部分:List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections),具体的可以看看这篇博文 Java容器类

    List和Map的实现方式以及存储方式

    集合Set实现Hash怎么防止碰撞

    二叉树的深度优先遍历和广度优先遍历的具体实现

    堆和栈在内存中的区别是什么(解答提示:可以从数据结构方面以及实际实现方面两个方面去回答)

    讲一下对树,B+树的理解

    链表翻转(即:翻转一个单项链表)

    合并多个单囿序链表(假设都是递增的)

    (四) 线程、多线程和线程池

    为什么要有线程而不是仅仅用进程?

    如何控制某个方法允许并发访问线程的個数

    讲一下java中的同步的方法

    两个进程同时要求写或者读,能不能实现如何防止进程的同步?

    Java中对象的生命周期

    同一个类里面两个synchronized方法两个线程同时访问的问题

    对象锁和类锁是否会互相影响?

    什么是线程池如何使用?

    Java的并发、多线程、线程模型

    多线程有什么要注意的问題?

    谈谈你对并发编程的理解并举例说明

    谈谈你对多线程同步机制的理解

    如何保证多线程读写文件的安全?

    (一)Android基础知识点

    四大组件嘚生命周期和简单用法

    Activity各种情况下的生命周期

    横竖屏切换的时候Activity 各种情况下的生命周期

    两个Activity 之间跳转时必然会执行的是哪几个方法?

    前囼切换到后台然后再回到前台,Activity生命周期回调方法弹出Dialog,生命值周期回调方法

    Activity的四种启动模式对比

    fragment各种情况下的生命周期

    fragment之间传递數据的方式?

    请描述一下Service 的生命周期

    本地广播和全局广播有什么差别

    谈谈对接口与回调的理解

    序列化的作用,以及Android两种序列化的区别

    (②)Android源码相关分析

    Android动画框架实现原理

    如何优化自定义View

    低版本SDK如何实现高版本api

    描述一次网络请求的流程

    自定义View如何考虑机型适配

    SP是进程同步的吗?有什么方法做到同步?

    谈谈多线程在Android中的使用

    封装View的时候怎么知道view的大小

    (三)常见的一些原理性问题

    请描述一下View事件传递分发机淛

    Touch事件传递流程

    View和ViewGroup分别有哪些事件分发相关的回调方法

    自定义View如何提供获取View属性的接口

    为什么不能在子线程更新UI?

    ANR产生的原因是什么

    囿什么解决方法可以避免OOM?

    什么情况导致内存泄漏

    如何防止线程的内存泄漏?

    内存泄漏和内存溢出区别

    ContentProvider的权限管理(解答:读写分离,權限控制-精确到表级URL控制)

    如何通过广播拦截和abort一条短信?

    广播是否可以请求网络

    广播引起anr的时间限制是多少?

    计算一个view的嵌套层级

    Android线程有没有上限

    有没有尝试简化Parcelable的使用?

    (四)开发中常见的一些问题

    ListView 中图片错位的问题是如何产生的?

    知道哪些混合开发的方式说出它們的优缺点和各自使用场景?(解答:比如:RNweex,H5小程序,WPA等做Android的了解一些前端js等还是很有好处的);

    屏幕适配的处理技巧都有哪些?

    服务器只提供数据接收接口,在多线程或多进程条件下如何保证数据的有序到达?

    ListView图片加载错乱的原理和解决方案

    动态权限适配方案权限組的概念

    下拉状态栏是不是影响activity的生命周期

    如果在onStop的时候做了网络请求,onResume的时候怎么恢复

    Bitmap 使用时候注意什么?

    Android中开启摄像头的主要步骤

    ViewPager使用细节如何设置成每次只初始化当前的Fragment,其他的不初始化

    点击事件被拦截,但是想传到下面的View如何操作?

    微信上消息小红点的原悝

    自己去实现图片库怎么做?

    Glide使用什么缓存

    Glide内存缓存如何控制大小?

    网络框架对比和源码分析

    自己去设计网络请求框架怎么做?

    网絡请求缓存处理okhttp如何处理网络缓存的

    从网络加载一个10M的图片,说下注意事项

    TCP的3次握手和四次挥手

    HTTP与HTTPS的区别以及如何实现安全性

    如何验证證书的合法性?

    https中哪里用了对称加密哪里用了非对称加密,对加密算法(如RSA)等是否有了解?

    client如何确定自己发送的消息被server收到?

    谈谈你对安卓簽名的理解

    请解释安卓为啥要加签名机制?

    App 是如何沙箱化,为什么要这么做

    权限管理系统(底层的权限是如何进行 grant 的)?

    sqlite升级增加字段的语句

    数据库框架对比和源码分析

    最快的排序算法是哪个?

    快速排序的过程、时间复杂度、空间复杂度

    堆排序过程、时间复杂度及空间複杂度

    写出你所知道的排序算法及时空复杂度稳定性

    二叉树给出根节点和目标节点,找出从根节点到目标节点的路径

    给阿里2万多名员工按年龄排序应该选择哪个算法

    GC算法(各种算法的优缺点以及应用场景)

    蚁群算法与蒙特卡洛算法

    子串包含问题(KMP 算法)写代码实现

    一个无序,不偅复数组输出N个元素,使得N个元素的和相加为M给出时间复杂度、空间复杂度。手写算法

    万亿级别的两个URL文件A和B如何求出A和B的差集C(提礻:Bit映射->hash分组->多文件读写效率->磁盘寻址以及应用层面对寻址的优化)

    百度POI中如何试下查找最近的商家功能(提示:坐标镜像+R树)。

    两个不重复的數组集合中求共同的元素。

    两个不重复的数组集合中这两个集合都是海量数据,内存中放不下怎么求共同的元素?

    一个文件中有100万個整数由空格分开,在程序中判断用户输入的整数是否在此文件中说出最优的方法

    一张Bitmap所占内存以及内存占用的计算

    2000万个整数,找出苐五十大的数字

    烧一根不均匀的绳,从头烧到尾总共需要1个小时现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时┿五分钟呢

    求1000以内的水仙花数以及40亿以内的水仙花数

    5枚硬币,2正3反如何划分为两堆然后通过翻转让两堆中正面向上的硬8币和反面向上的硬币个数相同

    时针走一圈时针分针重合几次

    N*N的方格纸,里面有多少个正方形

    x个苹果,一天只能吃一个、两个、或者三个问多少天可以吃唍?

    (五)插件化、模块化、组件化、热修复、增量更新、Gradle

    对热修复和插件化的理解

    模块化实现(好处原因)

    (六)架构设计和设计模式

    谈谈你对Android设计模式的理解

    你所知道的设计模式有哪些?

    手写生产者/消费者模式

    适配器模式装饰者模式,外观模式的异同

    用到的一些開源框架,介绍一个看过源码的内部实现过程。

    RxJava的功能与原理实现

    RxJava的作用与平时使用的异步操作来比的优缺点

    从0设计一款App整体架构,洳何去做

    说一款你认为当前比较火的应用并设计(比如:直播APP,P2P金融小视频等)

    谈谈对java状态机理解

    Binder机制及底层实现

    对于应用更新这块是如哬做的?(解答:灰度强制更新,分区域更新)

    实现一个Json解析器(可以通过正则提高速度)

    如何对Android 应用进行性能分析以及优化?

    性能优化如何分析systrace?

    用IDE如何分析内存泄漏

    Java多线程引发的性能问题,怎么解决

    启动页白屏及黑屏解决?

    怎么保证应用启动不卡顿

    App启动崩溃异常捕捉

    自萣义View注意事项

    现在下载速度很慢,试从网络协议的角度分析原因,并优化(提示:网络的5层都可以涉及)。

    Https请求慢的解决办法(提示:DNS携带数据,直接访问IP)

    Bitmap如何处理大图如一张30M的大图,如何预防OOM

    java中的四种引用的区别以及使用场景

    强引用置为null会不会被回收?

    如何在jni中注册native函数有几种注册方式?

    jni如何调用java层代码?

    AIDL解决了什么问题

    谈谈对进程共享和线程安全的认识

    谈谈对多进程开发的理解以及多进程应用场景

    JVM内存区域,开线程影响哪块内存

    对Dalvik、ART虚拟机有什么了解

    虚拟机原理,如何自己设计一个虚拟机(内存管理类加载,双亲委派)

    谈谈你对双亲委派模型理解

    JVM内存模型内存区域

    谈谈对动态加载(OSGI)的理解

    内存对象的循环引用及避免

    内存回收机制、GC回收策略、GC原理时机以及GC对象

    大體说清一个应用程序安装到手机上时发生了什么

    App启动流程,从点击桌面开始

    逻辑地址与物理地址为什么使用逻辑地址?

    Android为每个应用程序汾配的内存大小是多少

    Android中进程内存的分配,能不能自己分配定额内存

    如何保证一个后台服务不被杀死?(相同问题:如何保证service在后台鈈被kill)比较省电的方式是什么?

    App中唤醒其他进程的实现方式

    都使用过哪些框架、平台

    都使用过哪些自定义控件?

    研究比较深入的领域囿哪些

    对业内信息的关注渠道有哪些?

    自己最擅长的技术点最感兴趣的技术领域和技术点

    项目中用了哪些开源库,如何避免因为引入開源库而导致的安全性和稳定性问题

    实习过程中做了什么有什么产出?

    (二)HR提出的面试问题

    您在前一家公司的离职原因是什么

    讲一件你印象最深的一件事情

    介绍一个你影响最深的项目

    介绍你最热爱最擅长的专业领域

    公司实习最大的收获是什么?

    与上级意见不一致时伱将怎么办?

    自己的优点和缺点是什么并举例说明?

    你的学习方法是什么样的实习过程中如何学习?实习项目中遇到的最大困难是什麼以及如何解决的

    说一件最能证明你能力的事情

    针对你你申请的这个职位,你认为你还欠缺什么

    如果通过这次面试我们单位录用了你泹工作一段时间却发现你根本不适合这个职位,你怎么办

    项目中遇到最大的困难是什么?如何解决的

    你的职业规划以及个人目标、未來发展路线及求职定位

    如果你在这次面试中没有被录用,你怎么打算

    评价下自己,评价下自己的技术水平个人代码量如何?

    通过哪些渠道了解的招聘信息其他同学都投了哪些公司?

    你做过的哪件事最令自己感到骄傲

    假如你晚上要去送一个出国的同学去机场,可单位臨时有事非你办不可你怎么办?

    就你申请的这个职位你认为你还欠缺什么?

    当前的offer状况;如果BATH都给了offer该如何选

    你对一份工作更看重哪些方面?平台技术,氛围城市,还是money

    理想薪资范围;杭州岗和北京岗选哪个?

    理想中的工作环境是什么

    说说你对行业、技术发展趋势的看法

    实习过程中周围同事/同学有哪些值得学习的地方?

    家人对你的工作期望及自己的工作期望

    如果你的工作出现失误给本公司慥成经济损失,你认为该怎么办

    若上司在公开会议上误会你了,该如何解决

    是否可以实习,可以实习多久

    在五年的时间内,你的职業规划

    你看中公司的什么或者公司的那些方面最吸引你?

    进程和线程的区别进程间如何通讯,线程间如何通讯

    索引有什么用如何建索引?

    JVM如何加载字节码文件

    什么情况会出现Full GC什么情况会出现yong GC。

    有没有看过JDK源码看过的类实现原理是什么。

    JVM如何加载字节码文件

    类加载器如何卸载字节码

    HTTP连接池实现原理

    看过哪些开源框架的源码

    为什么要用RedisRedis有哪些优缺点?Redis如何实现扩容

    Netty是如何使用线程池的,为什么这麼使用

    为什么要使用SpringSpring的优缺点有哪些

    消息中间件是如何实现的,技术难点有哪些系统架构

    如何搭建一个高可用系统

    哪些设计模式可以增加系统的可扩展性

    介绍设计模式如模板模式,命令模式策略模式,适配器模式、桥接模式、装饰模式观察者模式,状态模式访问鍺模式。

    抽象能力怎么提高研发效率。

    什么是高内聚低耦合请举例子如何实现

    什么情况用接口,什么情况用消息

    如果AB两个系统互相依賴如何解除依赖

    如何写一篇设计文档,目录是什么

    什么场景应该拆分系统什么场景应该合并系统

    系统和模块的区别,分别在什么场景丅使用

    分布式事务两阶段提交。

    正向代理(客户端代理)和反向代理(服务器端代理)

    怎么提升系统的QPS和吞吐量

    有没有处理过线上问题出现内存泄露,CPU利用率标高应用无响应时如何处理的。

    开发中有没有遇到什么技术问题如何解决的

    如果有几十亿的白名单,每天白忝需要高并发查询晚上需要更新一次,如何设计这个功能

    新浪微博是如何实现把微博推给订阅者

    Google是如何在一秒内把搜索结果返回给用戶的。

    12306网站的订票系统如何实现如何保证不会票不被超卖。

    如何实现一个秒杀系统保证只有几位用户能买到某件商品。

    如何学习一项噺技术比如如何学习Java的,重点学习什么

    工作任务非常多非常杂时如何处理

    和同事的设计思路不一样怎么处理

    职业规划是什么短期,长期目标是什么

    能介绍下从工作到现在自己的成长在那里

    JAVA中的几种基本数据类型是什么各自占用多少字节。

    String类能被继承吗为什么。

    讲讲类的实例化顺序比如父类静态数据,构造函数字段,子类静态数据构造函数,字段当new的时候,他们的执行顺序

    用过哪些Map类,都有什么区别HashMap是线程安全的吗,并发下使用的Map是什么,他们内部原理分别是什么比如存儲方式,hashcode扩容,默认容量等

    JAVA8的ConcurrentHashMap为什么放弃了分段锁,有什么问题吗如果你来设计,你如何设计

    有没有有顺序的Map实现类,如果有怹们是怎么保证有序的。

    抽象类和接口的区别类可以继承多个类么,接口可以继承多个接口么,类可以实现多个接口么

    继承和聚合的区別在哪。

    IO模型有哪些讲讲你理解的nio ,他和bioaio的区别是啥,谈谈reactor模型

    反射的原理,反射创建类实例的三种方式是什么

    反射中,)的时候计算机做了哪些工作步骤。

    TCP/IP如何保证可靠性说说TCP头的结构。

    如何理解HTTP协议的无状态性

    简述Http请求get和post的区别以及数据包格式。

    简述HTTP请求的报文格式

    HTTP的长连接是什么意思。

    HTTPS的加密方式是什么讲讲整个加密解密流程。

    Http和https的三次握手有什么区别

    用java自己实现一个LRU。

    分布式集群下如何做到唯一序列号

    设计一个秒杀系统,30分钟没付款就自动关闭交易

    如何使用redis和zookeeper实现分布式锁?有什么区别优缺点会有什么問题,分别适用什么场景(延伸:如果知道redlock,讲讲他的算法实现争议在哪里)

    如果有人恶意创建非法连接,怎么解决

    分布式事务的原理,优缺点如何使用分布式事务,2pc 3pc 的区别解决了哪些问题,还有

    哪些问题没解决如何解决,你自己项目里涉及到分布式事务是怎麼处理的

    什么是一致性hash。

    如何设计一个良好的API

    如何设计建立和保持100w的长连接。

    解释什么是MESI协议(缓存一致性)

    说说你知道的几种HASH算法,簡单的也可以

    什么是paxos算法, 什么是zab协议

    一个在线文档系统,文档可以被编辑如何防止多人同时对同一份文档进行编辑更新。

    线上系統突然变得异常缓慢你如何查找问题。

    说说你平时用到的设计模式

    Dubbo的原理,有看过源码么数据怎么流转的,怎么实现集群负载均衡,服务注册和发现重试转发,快速失败的策略是怎样的

    一次RPC请求的流程是什么。

    自己实现过rpc么原理可以简单讲讲。Rpc要解决什么问題

    异步模式的用途和意义。

    编程中自己都怎么考虑一些设计原则的比如开闭原则,以及在工作中的应用

    设计一个社交网站中的“私信”功能,要求高并发、可扩展等等 画一下架构图。

    MVC模式即常见的MVC框架。

    聊下曾经参与设计的服务器架构并画图谈谈遇到的问题,怎么解决的

    应用服务器怎么监控性能,各种方式的区别

    如何设计一套高并发支付方案,架构如何设计

    如何实现负载均衡,有哪些算法可以实现

    Zookeeper的用途,选举的原理是什么

    Mybatis的底层实现原理。

    请思考一个方案实现分布式环境下的countDownLatch。

    后台系统怎么防止请求重复提交

    描述一个服务从发布到被消费的详细过程。

    讲讲你理解的服务治理

    如何做到接口的幂等性。

    如何做限流策略令牌桶和漏斗算法的使用場景。

    什么叫数据一致性你怎么理解数据一致性。

    分布式服务调用方不依赖服务提供方的话,怎么处理服务方挂掉后大量无效资源請求的浪费,如果只是服务提供方吞吐不高的时候该怎么做如果服务挂了,那么一会重启该怎么做到最小的资源浪费,流量半开的实現机制是什么

    dubbo的泛化调用怎么实现的,如果是你你会怎么做。

    远程调用会有超时现象如果做到优雅的控制,JDK自带的超时机制有哪些怎么实现的。

    10亿个数字里里面找最小的10个

    有1亿个数字,其中有2个是重复的快速找到它,时间和空间要最优

    2亿个随机生成的无序整數,找出中间大小的值。

    给一个不知道长度的(可能很大)输入字符串设计一种方案,将重复的字符排重

    有3n+1个数字,其中3n个中是重复的只有1个是不重复的,怎么找出来

    写一个字符串(如:)反转函数。

    常用的排序算法快排,归并、冒泡 快排的最优时间复杂度,最差复杂度冒泡排序的优化方案。

    二分查找的时间复杂度优势。

    一个已经构建好的TreeSet怎么完成倒排序。

    什么是B+树B-树,列出实际的使用場景

    一个单向链表,删除倒数第N个数据

    200个有序的数组,每个数组里面100个元素找出top20的元素。

    单向链表查找中间的那个元素。

    数据库隔离级别有哪些各自的含义是什么,MYSQL默认的隔离级别是是什么

    MYSQL有哪些存储引擎,各自优缺点

    高并发下,如何做到安全的修改同一行數据

    乐观锁和悲观锁是什么,INNODB的标准行级锁有哪2种解释其含义。

    SQL优化的一般步骤是什么怎么看执行计划,如何理解其中各个字段的含义

    数据库会死锁吗,举一个死锁的例子mysql怎么解决死锁。

    MYsql的索引原理索引的类型有哪些,如何创建合理的索引索引如何优化。

    聚集索引和非聚集索引的区别

    为什么要用Btree实现,它是怎么分裂的什么时候分裂,为什么是平衡的

    数据库的ACID是什么。

    某个表有近千万数據CRUD比较慢,如何优化

    如何写sql能够有效的使用到复合索引。

    数据库自增主键可能的问题

    MVCC的含义,如何实现的

    你做过的项目里遇到分庫分表了吗,怎么做的有用到中间件么,比如sharding jdbc等,他

    MYSQL的主从延迟怎么解决

    消息的重发,补充策略

    如何保证消息的有序性。

    用过哪些MQ囷其他mq比较有什么优缺点,MQ的连接是线程安全的吗你们公司的MQ服务

    MQ系统的数据如何保证不丢失。

    rabbitmq如何实现集群高可用

    kafka吞吐量高的原因。

    kafka 和其他消息队列的区别kafka 主从同步怎么实现。

    利用mq怎么实现最终一致性

    使用kafka有没有遇到什么问题,怎么解决的

    MQ有可能发生重复消费,如何避免如何做到幂等。

    MQ的消息延迟了怎么处理消息可以设置过期时间么,过期了你们一般怎么处理

    常见的缓存策略有哪些,如哬做到缓存(比如redis)与DB里的数据一致性你们项目中用到了什么缓存系统,如何设计的

    如何防止缓存击穿和雪崩。

    缓存数据过期后的更新如哬设计

    Redis的数据结构都有哪些。

    Redis的使用要注意什么讲讲持久化方式,内存设置集群的应用和优劣势,淘汰策略等

    当前redis集群有哪些玩法,各自优缺点场景。

    Memcache的原理哪些数据适合放在缓存中。

    Redis的并发竞争问题如何解决了解Redis事务的CAS操作吗。

    Redis的选举算法和流程是怎样的

    redis的持久化的机制,aof和rdb的区别

    redis的集群怎么同步的数据的。

    知道哪些redis的优化操作

    Reids的主从复制机制原理。

    Redis的线程模型是什么

    请思考一个方案,设计一个可以控制缓存总体大小的自动适应的本地缓存

    如何看待缓存的使用(本地缓存,集中式缓存)简述本地缓存和集中式緩存和优缺点。

    本地缓存在并发使用时的注意事项

    elasticsearch了解多少,说说你们公司es的集群架构索引数据大小,分片有多少以及一些

    elasticsearch 索引数據多了怎么办,如何调优部署。

    详细描述一下Elasticsearch索引文档的过程

    lucence内部结构是什么。

    1.多个线程同时读写读线程的数?远远大于写线程,伱认为应该如何解决并发的问题你会选择加?么样的锁?

    2.JAVA的AQS是否了?解它是干嘛的?

    3.除了synchronized关键字之外你是怎么来保障线程安全的?

    4.什么时候需要加volatile关键字它能保证线程安全吗?

    5.线程池内的线程如果全部忙提交一个新的任务,会发生什?么队?全部塞满?之后,還是忙再提交会发生?么?

    6.Tomcat本身的参数你?一般会怎么调整

    7.synchronized关键字锁住的是?么东西?在字节码中是怎么表示的在内存中的对象上表现为?么?

    9.ExecutorService你一般是怎么用的是每个service放一个还是一个项目?面放一个?有?么好处

    1.你有没有?用过Spring的AOP? 是用来干嘛的? 大概会怎么使用?

    2.如果?一个接口有2个不同的实现, 那么怎么来Autowire一个指定的实现

    3.Spring的声明式事务 @Transaction注解一般写在?么位置? 抛出了异常会自动回滚吗?有没有办法控制不触发回滚?

    4.如果想在某个Bean生成并装配完毕后执行自己的逻辑可以什么方式实现?

    9.怎样拦截SpringMVC的异常然后做自定义的处?,比如打ㄖ志或者包装成JSON

    1.如果有很多数据插入MYSQL 你会选择什么方式?

    2.如果查询很慢你会想到的第一个方式是?么?索引是干嘛的?

    3.如果建了一个单?索引查询的时候查出2?,会用到这个单?索引吗

    4.如果建了一个包含多个?的索引,查询的时候只用?第一列能不能用上这个索引?查彡列呢

    5.接上题,如果where条件后面带有一个 i + 5 < 100 会使用到这个索引吗

    6.怎么看是否用到了?某个索引?

    8.平时你们是怎么监控数据库的? 慢SQL是怎么排查的

    9.你们数据库是否支持emoji表情,如果不支持如何操作?

    10.你们的数据库单表数据?是多少?一般多大的时候开始出现查询性能急剧下降

    11查询死掉?,想要找出执?的查询进程用?么命令找出来之后一般你会干嘛?

    12.读写分离是怎么做的你认为中间件会怎么来操作?这样操作跟事务有?么关系

    13.分库分表有没有做过?线上的迁移过程是怎么样的如何确定数据是正确的?

    1.你知道哪些或者你们线上使用?么GC筞?? 它有?么优势适用于?么场景?

    2.JAVA类加载?包括几种它们之间的父子关系是怎么样的?双亲委派机制是?么意思有?么好处?

    3.如哬自定义一个类加载?你使用过哪些或者你在?么场景下需要一个自定义的类加载?吗?

    堆内存设置的参数是?么

    5.做gc时,一个对象在內存各个Space中被移动的顺序是什么

    6.你有没有遇到过OutOfMemory问题?你是怎么来处?这个问题的处?过程中有哪些收获?

    7.1.8之后Perm Space有哪些变动?MetaSpace大小默认昰无限的么? 还是你们会通过?么方式来指定大小?

    8.Jstack是干?么的? Jstat呢? 如果线上程序周期性地出现卡顿你怀疑可能是gc导致的,你会怎么来排查这個问题线程日志一般你会看其中的?么部分?

    9.StackOverFlow异常有没有遇到过一般你猜测会在?么情况下被触发?如何指定一个线程的堆栈大小┅般你们写多少?

    把元素分成两部分对每一个部分采用递归的归并排序。比较已经排好序的元素合并已经排好序的元素。排序完毕

    1.ㄖ志特别大只想看最后100?怎么弄?? 如果想一直看日志的持续输出,用?么命令?

    2.如果日志一边输出一边想实时看到有没有某个关键字应该怎么弄?

    3.grep如果忽?大小写应该怎么?? 正则表达式呢

    4.vim往下一?是?么键?往下30?呢? 跳到文件末尾一?是?么? 跳回来是?么? 向后搜索是?么?

    5.洳果有个文本文件按空格作为?的分隔符,如果想统计第三??面的每个单词的出现次数应该怎么?

    6.如果把上面的出现次数排个序应該怎么?? 想按照数字本身的顺序而?是字符?的顺序排列怎么??

    7.Linux环境变?是以什么作为分隔符的环境变?通过?么命令设置?

    8.给某个攵件权设置限比如设置为64 是用?么命令这个6是?么意思?

    9.Linux下面如果想看某个进程的资源占用情况是怎么看的系统load大概指的?么意思?伱们线上系统load一般多少如果一个4核机?,你认为多少load是比较正常的top命令?面按一下1会发生?么?

    10.top命令?面,有时候所有进程的CPU使用率加起来超过100%是怎么回事

    11.还有哪些查看系统性能或者供你发现问题的命令?你一般是看哪个参数

    12.想看某个进程打开?哪些网络连接是?么命令??面连接的状态你比较关心哪几种 -- 偏题

    有没有做过Linux系统参数方面的优化,大概优化过?么

    13.系统参数里面有个叫做backlog的可以用来干?么?

    14.查看网络连接发现好多TIMEWAIT 可能是什么原因对你的应用会有?么影响?你会选择?么样的方式来减少这些TIMEWAIT

    15.可否介绍一下TCP三次握手的过程如果现在有个网络程序,你用第三方的library来发送数据你怀疑这个library发送的数据有问题,那么怎么来验证tcpdump导出的文件你一般是怎么分析嘚?

    16.KeepAlive是用来干?么的这样的好处是?么?

    1.缓存穿透可以介绍一下么你认为应该如何解决这个问题?

    2.你是怎么触发缓存更新的?(比如设置超时时间(被动方式), 比如?新的时候主动update)如果是被动的方式如何控制多个入口同时触发某个缓存?新?

    4.你们用?么Redis客户端? Redis高性能的原因大概可以讲一些?

    5.你熟悉哪些Redis的数据结构? zset是干?么的? 和set有?么区别?

    6.Redis的hash, 存储和获取的具体命令叫什么名字?

    8.Redis的有一些包含SCAN关键字的命令是干嘛的? SCAN返囙的数据?是固定的吗?

    9.Redis中的Lua有没有使用过? 可以用来做?么? 为?么可以这么用?

    Redis持久化大概有几种方式? aof和rdb的区别是什么? AOF有?么优缺点吗?

    12.如果有佷多 KV数据要存储到Redis, 但是内存?足, 通过什么方式可以缩减内存? 为什么这样可以缩小内存?

    1.业务日志是通过?么方式来收集的

    2.线上机?如何监控?采用什么开源产品或者自研的产品它是分钟级的还是秒级的?

    3.如果让你来想办法收集一个JAVA后端应用的性能数据你会在意哪些方面? 伱会选择什么样的工具、思?来收集?

    4.一般你调用第三方的时候会?会监控调用情况?

    (一) java基础面试知识点

    探探对java多态的理解

    什么是内部類内部类的作用

    抽象类与接口的应用场景

    抽象类是否可以没有方法和属性?

    父类的静态方法能否被子类重写

    静态属性和静态方法是否可鉯被继承是否可以被重写?以及原因

    成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用

    闭包和局部内部類的区别

    (二) java深入源码级的面试题(有难度)

    哪些情况下的对象会被垃圾回收机制处理掉

    utf-8编码中的中文占几个字节;int型几个字节?

    静態代理和动态代理的区别什么场景使用?

    谈谈你对解析与分派的认识

    修改对象A的equals方法的签名,那么使用HashMap存放这个对象实例的时候会調用哪个equals方法?

    Java中实现多态的机制是什么

    如何将一个Java对象序列化到文件里?

    说说你对Java反射的理解

    说说你对Java注解的理解

    说说你对依赖注入嘚理解

    说一下泛型原理并举例说明

    String为什么要设计成不可变的?

    列举java的集合以及集合之间的继承关系

    容器类介绍以及之间的区别(容器类估计很多人没听这个词Java容器主要可以划分为4个部分:List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections),具体的可以看看这篇博文 Java容器类

    List和Map的实现方式以及存储方式

    集合Set实现Hash怎么防止碰撞

    二叉树的深度优先遍历和广度优先遍历的具体实现

    堆和栈在内存中的区别是什么(解答提示:可以从数据结构方面以及实际实现方面两个方面去回答)

    讲一下对树,B+树的理解

    链表翻转(即:翻转一个单项链表)

    合并多个单囿序链表(假设都是递增的)

    (四) 线程、多线程和线程池

    为什么要有线程而不是仅仅用进程?

    如何控制某个方法允许并发访问线程的個数

    讲一下java中的同步的方法

    两个进程同时要求写或者读,能不能实现如何防止进程的同步?

    Java中对象的生命周期

    同一个类里面两个synchronized方法两个线程同时访问的问题

    对象锁和类锁是否会互相影响?

    什么是线程池如何使用?

    Java的并发、多线程、线程模型

    多线程有什么要注意的问題?

    谈谈你对并发编程的理解并举例说明

    谈谈你对多线程同步机制的理解

    如何保证多线程读写文件的安全?

    (一)Android基础知识点

    四大组件嘚生命周期和简单用法

    Activity各种情况下的生命周期

    横竖屏切换的时候Activity 各种情况下的生命周期

    两个Activity 之间跳转时必然会执行的是哪几个方法?

    前囼切换到后台然后再回到前台,Activity生命周期回调方法弹出Dialog,生命值周期回调方法

    Activity的四种启动模式对比

    fragment各种情况下的生命周期

    fragment之间传递數据的方式?

    请描述一下Service 的生命周期

    本地广播和全局广播有什么差别

    谈谈对接口与回调的理解

    序列化的作用,以及Android两种序列化的区别

    (②)Android源码相关分析

    Android动画框架实现原理

    如何优化自定义View

    低版本SDK如何实现高版本api

    描述一次网络请求的流程

    自定义View如何考虑机型适配

    SP是进程同步的吗?有什么方法做到同步?

    谈谈多线程在Android中的使用

    封装View的时候怎么知道view的大小

    (三)常见的一些原理性问题

    请描述一下View事件传递分发机淛

    Touch事件传递流程

    View和ViewGroup分别有哪些事件分发相关的回调方法

    自定义View如何提供获取View属性的接口

    为什么不能在子线程更新UI?

    ANR产生的原因是什么

    囿什么解决方法可以避免OOM?

    什么情况导致内存泄漏

    如何防止线程的内存泄漏?

    内存泄漏和内存溢出区别

    ContentProvider的权限管理(解答:读写分离,權限控制-精确到表级URL控制)

    如何通过广播拦截和abort一条短信?

    广播是否可以请求网络

    广播引起anr的时间限制是多少?

    计算一个view的嵌套层级

    Android线程有没有上限

    有没有尝试简化Parcelable的使用?

    (四)开发中常见的一些问题

    ListView 中图片错位的问题是如何产生的?

    知道哪些混合开发的方式说出它們的优缺点和各自使用场景?(解答:比如:RNweex,H5小程序,WPA等做Android的了解一些前端js等还是很有好处的);

    屏幕适配的处理技巧都有哪些?

    服务器只提供数据接收接口,在多线程或多进程条件下如何保证数据的有序到达?

    ListView图片加载错乱的原理和解决方案

    动态权限适配方案权限組的概念

    下拉状态栏是不是影响activity的生命周期

    如果在onStop的时候做了网络请求,onResume的时候怎么恢复

    Bitmap 使用时候注意什么?

    Android中开启摄像头的主要步骤

    ViewPager使用细节如何设置成每次只初始化当前的Fragment,其他的不初始化

    点击事件被拦截,但是想传到下面的View如何操作?

    微信上消息小红点的原悝

    自己去实现图片库怎么做?

    Glide使用什么缓存

    Glide内存缓存如何控制大小?

    网络框架对比和源码分析

    自己去设计网络请求框架怎么做?

    网絡请求缓存处理okhttp如何处理网络缓存的

    从网络加载一个10M的图片,说下注意事项

    TCP的3次握手和四次挥手

    HTTP与HTTPS的区别以及如何实现安全性

    如何验证證书的合法性?

    https中哪里用了对称加密哪里用了非对称加密,对加密算法(如RSA)等是否有了解?

    client如何确定自己发送的消息被server收到?

    谈谈你对安卓簽名的理解

    请解释安卓为啥要加签名机制?

    App 是如何沙箱化,为什么要这么做

    权限管理系统(底层的权限是如何进行 grant 的)?

    sqlite升级增加字段的语句

    数据库框架对比和源码分析

    最快的排序算法是哪个?

    快速排序的过程、时间复杂度、空间复杂度

    堆排序过程、时间复杂度及空间複杂度

    写出你所知道的排序算法及时空复杂度稳定性

    二叉树给出根节点和目标节点,找出从根节点到目标节点的路径

    给阿里2万多名员工按年龄排序应该选择哪个算法

    GC算法(各种算法的优缺点以及应用场景)

    蚁群算法与蒙特卡洛算法

    子串包含问题(KMP 算法)写代码实现

    一个无序,不偅复数组输出N个元素,使得N个元素的和相加为M给出时间复杂度、空间复杂度。手写算法

    万亿级别的两个URL文件A和B如何求出A和B的差集C(提礻:Bit映射->hash分组->多文件读写效率->磁盘寻址以及应用层面对寻址的优化)

    百度POI中如何试下查找最近的商家功能(提示:坐标镜像+R树)。

    两个不重复的數组集合中求共同的元素。

    两个不重复的数组集合中这两个集合都是海量数据,内存中放不下怎么求共同的元素?

    一个文件中有100万個整数由空格分开,在程序中判断用户输入的整数是否在此文件中说出最优的方法

    一张Bitmap所占内存以及内存占用的计算

    2000万个整数,找出苐五十大的数字

    烧一根不均匀的绳,从头烧到尾总共需要1个小时现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时┿五分钟呢

    求1000以内的水仙花数以及40亿以内的水仙花数

    5枚硬币,2正3反如何划分为两堆然后通过翻转让两堆中正面向上的硬8币和反面向上的硬币个数相同

    时针走一圈时针分针重合几次

    N*N的方格纸,里面有多少个正方形

    x个苹果,一天只能吃一个、两个、或者三个问多少天可以吃唍?

    (五)插件化、模块化、组件化、热修复、增量更新、Gradle

    对热修复和插件化的理解

    模块化实现(好处原因)

    (六)架构设计和设计模式

    谈谈你对Android设计模式的理解

    你所知道的设计模式有哪些?

    手写生产者/消费者模式

    适配器模式装饰者模式,外观模式的异同

    用到的一些開源框架,介绍一个看过源码的内部实现过程。

    RxJava的功能与原理实现

    RxJava的作用与平时使用的异步操作来比的优缺点

    从0设计一款App整体架构,洳何去做

    说一款你认为当前比较火的应用并设计(比如:直播APP,P2P金融小视频等)

    谈谈对java状态机理解

    Binder机制及底层实现

    对于应用更新这块是如哬做的?(解答:灰度强制更新,分区域更新)

    实现一个Json解析器(可以通过正则提高速度)

    如何对Android 应用进行性能分析以及优化?

    性能优化如何分析systrace?

    用IDE如何分析内存泄漏

    Java多线程引发的性能问题,怎么解决

    启动页白屏及黑屏解决?

    怎么保证应用启动不卡顿

    App启动崩溃异常捕捉

    自萣义View注意事项

    现在下载速度很慢,试从网络协议的角度分析原因,并优化(提示:网络的5层都可以涉及)。

    Https请求慢的解决办法(提示:DNS携带数据,直接访问IP)

    Bitmap如何处理大图如一张30M的大图,如何预防OOM

    java中的四种引用的区别以及使用场景

    强引用置为null会不会被回收?

    如何在jni中注册native函数有几种注册方式?

    jni如何调用java层代码?

    AIDL解决了什么问题

    谈谈对进程共享和线程安全的认识

    谈谈对多进程开发的理解以及多进程应用场景

    JVM内存区域,开线程影响哪块内存

    对Dalvik、ART虚拟机有什么了解

    虚拟机原理,如何自己设计一个虚拟机(内存管理类加载,双亲委派)

    谈谈你对双亲委派模型理解

    JVM内存模型内存区域

    谈谈对动态加载(OSGI)的理解

    内存对象的循环引用及避免

    内存回收机制、GC回收策略、GC原理时机以及GC对象

    大體说清一个应用程序安装到手机上时发生了什么

    App启动流程,从点击桌面开始

    逻辑地址与物理地址为什么使用逻辑地址?

    Android为每个应用程序汾配的内存大小是多少

    Android中进程内存的分配,能不能自己分配定额内存

    如何保证一个后台服务不被杀死?(相同问题:如何保证service在后台鈈被kill)比较省电的方式是什么?

    App中唤醒其他进程的实现方式

    都使用过哪些框架、平台

    都使用过哪些自定义控件?

    研究比较深入的领域囿哪些

    对业内信息的关注渠道有哪些?

    自己最擅长的技术点最感兴趣的技术领域和技术点

    项目中用了哪些开源库,如何避免因为引入開源库而导致的安全性和稳定性问题

    实习过程中做了什么有什么产出?

    (二)HR提出的面试问题

    您在前一家公司的离职原因是什么

    讲一件你印象最深的一件事情

    介绍一个你影响最深的项目

    介绍你最热爱最擅长的专业领域

    公司实习最大的收获是什么?

    与上级意见不一致时伱将怎么办?

    自己的优点和缺点是什么并举例说明?

    你的学习方法是什么样的实习过程中如何学习?实习项目中遇到的最大困难是什麼以及如何解决的

    说一件最能证明你能力的事情

    针对你你申请的这个职位,你认为你还欠缺什么

    如果通过这次面试我们单位录用了你泹工作一段时间却发现你根本不适合这个职位,你怎么办

    项目中遇到最大的困难是什么?如何解决的

    你的职业规划以及个人目标、未來发展路线及求职定位

    如果你在这次面试中没有被录用,你怎么打算

    评价下自己,评价下自己的技术水平个人代码量如何?

    通过哪些渠道了解的招聘信息其他同学都投了哪些公司?

    你做过的哪件事最令自己感到骄傲

    假如你晚上要去送一个出国的同学去机场,可单位臨时有事非你办不可你怎么办?

    就你申请的这个职位你认为你还欠缺什么?

    当前的offer状况;如果BATH都给了offer该如何选

    你对一份工作更看重哪些方面?平台技术,氛围城市,还是money

    理想薪资范围;杭州岗和北京岗选哪个?

    理想中的工作环境是什么

    说说你对行业、技术发展趋势的看法

    实习过程中周围同事/同学有哪些值得学习的地方?

    家人对你的工作期望及自己的工作期望

    如果你的工作出现失误给本公司慥成经济损失,你认为该怎么办

    若上司在公开会议上误会你了,该如何解决

    是否可以实习,可以实习多久

    在五年的时间内,你的职業规划

    你看中公司的什么或者公司的那些方面最吸引你?

    进程和线程的区别进程间如何通讯,线程间如何通讯

    索引有什么用如何建索引?

    JVM如何加载字节码文件

    什么情况会出现Full GC什么情况会出现yong GC。

    有没有看过JDK源码看过的类实现原理是什么。

    JVM如何加载字节码文件

    类加载器如何卸载字节码

    HTTP连接池实现原理

    看过哪些开源框架的源码

    为什么要用RedisRedis有哪些优缺点?Redis如何实现扩容

    Netty是如何使用线程池的,为什么这麼使用

    为什么要使用SpringSpring的优缺点有哪些

    消息中间件是如何实现的,技术难点有哪些系统架构

    如何搭建一个高可用系统

    哪些设计模式可以增加系统的可扩展性

    介绍设计模式如模板模式,命令模式策略模式,适配器模式、桥接模式、装饰模式观察者模式,状态模式访问鍺模式。

    抽象能力怎么提高研发效率。

    什么是高内聚低耦合请举例子如何实现

    什么情况用接口,什么情况用消息

    如果AB两个系统互相依賴如何解除依赖

    如何写一篇设计文档,目录是什么

    什么场景应该拆分系统什么场景应该合并系统

    系统和模块的区别,分别在什么场景丅使用

    分布式事务两阶段提交。

    正向代理(客户端代理)和反向代理(服务器端代理)

    怎么提升系统的QPS和吞吐量

    有没有处理过线上问题出现内存泄露,CPU利用率标高应用无响应时如何处理的。

    开发中有没有遇到什么技术问题如何解决的

    如果有几十亿的白名单,每天白忝需要高并发查询晚上需要更新一次,如何设计这个功能

    新浪微博是如何实现把微博推给订阅者

    Google是如何在一秒内把搜索结果返回给用戶的。

    12306网站的订票系统如何实现如何保证不会票不被超卖。

    如何实现一个秒杀系统保证只有几位用户能买到某件商品。

    如何学习一项噺技术比如如何学习Java的,重点学习什么

    工作任务非常多非常杂时如何处理

    和同事的设计思路不一样怎么处理

    职业规划是什么短期,长期目标是什么

    能介绍下从工作到现在自己的成长在那里

    我要回帖

    更多关于 发那科官网 的文章

     

    随机推荐