Aunque estas 70 preguntas de entrevista hicieron que la gente se entumeciera el cuero cabelludo, obtuve 3 grandes ofertas de fábrica

Hable acerca de comprender el modo de comando

Encapsula una solicitud como un objeto, de modo que los usuarios puedan usar diferentes solicitudes para parametrizar clientes; poner en cola solicitudes o registrar registros de solicitudes, y admitir operaciones reversibles

Cuando usar:

  • El programa necesita especificar, organizar y ejecutar solicitudes en diferentes momentos.
  • El programa necesita proporcionar una operación de deshacer.
  • El programa necesita soportar operaciones macro.

Ventajas:

  • En el modo de comando, el solicitante (Invoker) no interactúa directamente con el receptor (Receptor), y el solicitante (Invoker) no contiene la referencia del receptor (Receptor), lo que elimina por completo el acoplamiento entre ellos.
  • El modo de comando satisface el "principio de abrir-cerrar". Si agrega un nuevo comando específico y el destinatario del comando, la persona que llama puede usar el nuevo objeto de comando sin modificar el código de la persona que llama; por el contrario, si agrega una nueva persona que llama, no tiene que modificar el comando y el receptor específicos existentes, nuevo Las personas que llaman adicionales pueden usar los comandos específicos existentes.
  • Dado que la solicitud del solicitante se encapsula en un comando específico, el comando específico se puede guardar en un medio persistente, y el comando específico se puede volver a ejecutar cuando sea necesario. Por lo tanto, el modo de comando se puede usar para grabar registros.
  • Use el modo de comando para poner en cola la "solicitud" del solicitante. Cada solicitud corresponde a un comando específico, por lo que estos comandos específicos se pueden ejecutar en un orden determinado.

Un objeto tiene múltiples operaciones, pero no queremos que la persona que llama (solicitante) lo use directamente, agregamos un objeto adicional y luego dejamos que la persona que llama use esas operaciones a través de este objeto. Por ejemplo, tenemos una clase que puede crear o eliminar archivos en el disco (receptor), pero no queremos proporcionarlos directamente a otros (solicitantes), por lo que creamos los comandos correspondientes para sus diversas operaciones

//接收者
public class MakeFile {
  //新建文件
  public void createFile(String name) throws IOException{
    File file = new File(name);
    file.createNewFile();
  }
  //删除文件
  public boolean deleteFile(String name){
    File file = new File(name);
    if(file.exists()&&file.isFile()){
      file.delete();
    return true;
  }
     return false;
  }
}
//命令接口
public interface Command {
  void execute(String name) throws Exception;
}
//新建文件命令
public class CommandCreate implements Command {
  MakeFile makeFile;
  public CommandCreate(MakeFile makeFile) {
    this.makeFile = makeFile;
  }
  @Override
  public void execute(String name) throws Exception {
    makeFile.createFile(name);
  }
}
//删文件命令
public class CommandDelete implements Command{
  MakeFile makeFile;
  public CommandDelete(MakeFile makeFile) {
    this.makeFile = makeFile;
  }
  @Override
  public void execute(String name) throws Exception {
    makeFile.deleteFile(name);
  }
}
//请求者
public class Client {
  Command command;
  public Client setCommand(Command command){
    this.command = command;
    return this;
  }
  public void executeCommand(String name) throws Exception{
    if(command==null)
    throw new Exception("命令不能为空!");
    command.execute(name);
  }
}
public class Test {
public static void main(String args[]) throws Exception{
  //接收者
  MakeFile makeFile = new MakeFile();
  //命令
  CommandCreate create = new CommandCreate(makeFile);
  CommandDelete delete = new CommandDelete(makeFile);
  //请求者
  Client client = new Client();
  //执行命令
  client.setCommand(create).executeCommand("d://test1.txt");
  client.setCommand(create).executeCommand("d://test2.txt");
  client.setCommand(delete).executeCommand("d://test2.txt");
  }
}//执行完后在D盘会有一个test1.txt的文件,test2.txt本页创建了,不过又被删除了

No se debe abusar del modo de comando, por ejemplo: al usar este modo, habrá más objetos (comandos).

Describa brevemente la diferencia entre TCP y UDP

tcp y udp son los protocolos en la capa de transporte del modelo OSI. TCP proporciona una transmisión de comunicación confiable, mientras que UDP a menudo se usa para permitir la transmisión y el control detallado de la transmisión de comunicación de la aplicación.

La diferencia entre los dos es aproximadamente la siguiente:

  • tcp está orientado a la conexión, udp no está orientado a la conexión, es decir, no es necesario establecer un enlace antes de enviar datos;
  • tcp proporciona un servicio confiable (transmisión de datos), udp no puede garantizarlo;
  • tcp es para flujos de bytes, udp es para paquetes;
  • La transmisión de datos TCP es lenta, la transmisión de datos udp es rápida;

Método de cifrado de datos de red de Android

El cifrado simétrico significa que tanto los datos cifrados como los descifrados usan la misma clave, y el algoritmo a este respecto es DES.

El cifrado asimétrico , el cifrado y el descifrado utilizan claves diferentes. Antes de enviar datos, primero debe acordar con el servidor generar una clave pública y una clave privada. Los datos cifrados con la clave pública se pueden descifrar con la clave privada, y viceversa. El algoritmo a este respecto es RSA. Tanto ssh como ssl son cifrados asimétricos típicos.

La diferencia entre Http y Https

HTTP : el Protocolo de transferencia de hipertexto (Protocolo de transferencia de hipertexto) es actualmente el protocolo de transferencia de red más utilizado en Internet. Todos los archivos WWW deben cumplir con este estándar. El propósito original de diseñar HTTP era proporcionar un método para publicar y recibir páginas HTML. Es principalmente un estándar de solicitud y respuesta de cliente y servidor (TCP), pero está siendo reemplazado por HTTPS.

HTTPS : Capa de sockets seguros de transferencia de hipertexto (HyperText Transfer Protocol Secure Socket sobre Protocolo de Capa) o HTTPS (Hypertext Transfer Protocol Secure) , creado por Netscape (Netscape) en 1994, basado en la seguridad El canal HTTP objetivo. En pocas palabras, es una versión segura de HTTP. Es decir, la capa SSL se agrega bajo HTTP, y la base de seguridad de HTTPS es SSL. Por lo tanto, el contenido detallado encriptado requiere SSL.

La principal diferencia:

  1. URL: http generalmente comienza con http: //, y https comienza con https: //.
  2. Certificado: http no requiere un certificado; https debe solicitar un certificado para ca. En general, hay pocos certificados gratuitos, por lo que se requiere una cierta tarifa.
  3. Seguridad: la información http se transmite en texto claro; https es un protocolo seguro de transmisión encriptada SSL.
  4. Puerto: http El puerto predeterminado es 80; https es 443.
  5. Conexión: la conexión http es muy simple y sin estado; el protocolo https es un protocolo de red creado por el protocolo SSL + http que puede llevar a cabo la transmisión cifrada y la autenticación de identidad, por lo que será más lento establecer una conexión por primera vez, pero es más seguro que el protocolo http.

Adjunto: ventajas y desventajas de https:

Ventajas:

  1. El certificado se puede usar para confiar más en el servidor.
  2. Más seguro y a prueba de manipulaciones.

Desventajas

  1. https requiere un certificado.
  2. Debido a que la transmisión está encriptada, aumentará el consumo de CPU en cierta medida.
  3. Debido a la necesidad de https de devolver la clave y confirmar el algoritmo de cifrado, será más lento establecer la conexión por primera vez.
  4. El consumo de ancho de banda aumentará y la presión sobre el servidor será grande.

Http avanzado: https://mp.weixin.qq.com/s/3TaonTzAsqqLLbJ-yrwNdw

进阶 Https : https: //mp.weixin.qq.com/s/lCr7NuQNLQh4Ake8yXorxg? Scene = 25 # wechat_redirect

Describa brevemente el proceso de empaquetado de apk

  1. Empaquete el archivo de recursos y genere el archivo R.java Entrada: archivo res, archivo Assets, archivo AndroidManifest.xml, biblioteca de clases básica de Android (archivo Android.jar) Salida: R.java, resources.arsc Herramienta: herramienta aapt Ubicación: SDK \ build -tools \ 29.0.0 \ aapt.exe
  2. Procese el archivo aidl y genere la entrada correspondiente del archivo java: archivo de código fuente, archivo aidl, salida del archivo framework.aidl: herramienta correspondiente del archivo .java: ubicación de la herramienta de la herramienta aidl: SDK \ build-tools \ 29.0.0 \ aidl.exe
  3. Compile el código fuente del proyecto, genere la entrada del archivo de clase correspondiente: archivo de código fuente (incluido el archivo .java generado por R.java y AIDL), salida del archivo de biblioteca (archivo jar): herramienta de archivo .class: ubicación de herramienta de herramienta javac: Java \ jdk1.8.0 _201 \ bin \ javac.exe
  4. Convierta todos los archivos de clase y genere el archivo classes.dex Entrada: archivos .class (incluidos los archivos .class generados por Aidl, los archivos .class generados por R, los archivos fuente generados por los archivos .class), los archivos de biblioteca (archivos .jar) Salida: .dex Herramienta de archivo: herramienta javac Ubicación de la herramienta: Java \ jdk1.8.0_201 \ bin \ javac.exe
  5. Paquete para generar la entrada del archivo apk: archivo de recursos empaquetados, archivo de clase empaquetado (archivo .dex), archivo libs (incluido el archivo .so) Salida: herramienta de archivo .apk sin firmar: la herramienta apkbuilder.bat se abandona, se cambia a sdklib ubicación de la herramienta .jar: E: \ SDK \ tools \ lib \ sdklib.jar
  6. Entrada de firma al archivo apk: salida de archivo .apk sin firmar: herramienta de archivo .apk firmada: herramienta jarsigner ubicación de la herramienta apksigner: Java \ jdk1.8.0_201 \ bin \ jarsigner.exe SDK \ build-tools \ 29.0.0 \ lib \ apksigner.jar
  7. Alinee la entrada del archivo apk firmado: salida del archivo .apk firmado: herramienta de archivo .apk alineada: ubicación de la herramienta de la herramienta zipalign: SDK \ build-tools \ 29.0.0 \ zipalign.exe

Nota: La ubicación de la herramienta se basa en la plataforma win. Conexión de referencia:

https://developer.android.com/studio/build/index.html?hl=zh-cn#build-processhttps://blog.csdn.net/jiangwei0910410003/article/details/50402000

El artículo no es fácil. Si te gusta este artículo, o si te es útil, espero que te pueda gustar, reenviarlo y seguirlo. El artículo se actualizará continuamente. ¡Productos absolutamente secos! ! !

Publicado 34 artículos originales · Me gusta1 · Visitas 756

Supongo que te gusta

Origin blog.csdn.net/Android725/article/details/105374988
Recomendado
Clasificación