2020-07-07 准备腾讯客户端开发面试

2020-07-08  本文已影响0人  七昂的技术之旅
  1. 什么是BLE,以及BLE的应用场景是什么?
    答:BLE是Bluetooth Low Energy,低功耗蓝牙。BLE主要应用在短距离设备通信,距离限制在0-50m左右。

  2. 利用i++聊聊线程安全问题,如何解决线程安全?
    答:线程间共享内存,导致多线程下i的数值被多个线程控制,造成线程不安全,可以使用synchronized关键字避免。

  3. Android系统里的消息传递机制 Handler

  1. 简述Android中的ANR,以及为什么会出现ANR?
    ANR就是Application Not Responding ,即应用程序未响应,之所以会造成这种异常是因为Android是在主线程即UI线程中更新界面的,但是如果在UI线程中进行过多的耗时操作就会堵塞主线程从而造成ANR,具体造成ANR的原因有三个:
    以下四个条件都可以造成ANR发生:
  1. Java 单例模式
public class Singleton{
    private static Singleton instance;
    private Singleton();
    private static synchronized Singleton getInstance(){
    if(instance == null){
       instance = new Singleton();
   }
    return instance;
}
}
public class Singleton{
    private static Singleton instance =  new Singleton();
    private Singleton(){};
    private static Singleton getInstance(){
        return instance;
    }
}
  1. java 内存泄漏:不再会被使用的对象的内存不能被回收。
  1. java 异常处理:Java所有异常类都是 Throwable的子类。它包括Java异常处理的两个重要子类:Error和Exception.

① 抛出异常:当一个方法出现错误引发异常时,方法创建异常对象并交付运行时系统,异常对象中包含了异常类型和异常出现时的程序状态等异常信息。运行时系统负责寻找处置异常的代码并执行。

② 捕捉异常:在方法抛出异常之后,运行时系统将转为寻找合适的异常处理器(exception handler)。潜在的异常处理器是异常发生时依次存留在调用栈中的方法的集合。当异常处理器所能处理的异常类型与方法抛出的异常类型相符时,即为合适的异常处理器。运行时系统从发生异常的方法开始,依次回查调用栈中的方法,直至找到含有合适异常处理器的方法并执行。当运行时系统遍历调用栈而未找到合适的异常处理器,则运行时系统终止。同时,意味着Java程序的终止。

① throws:通常被用在声明方法时,用来指定方法可能抛出的异常,多个异常可使用逗号分隔。throws关键字将异常抛给上一级,如果不想处理该异常,可以继续向上抛出,但最终要有能够处理该异常的代码。

② throw:通常用在方法体中或者用来抛出用户自定义异常,并且抛出一个异常对象。程序在执行到throw语句时立即停止,如果要捕捉throw抛出的异常,则必须使用try-catch语句块或者try-catch-finally语句。

上一篇下一篇

猜你喜欢

热点阅读