以下是今年春招中国平安的AI面试题,不过具体我已经有些忘了,都是回忆起来的,然后搜集了部分答案,可能不太准确,所以可能具体的还需要去深入了解下。
目录
SQL的优化可以从哪几个方面考虑?
在表中建立索引,优先考虑where、group by使用到的字段;
尽量避免使用select *,返回无用的字段会降低查询效率;
尽量避免使用in 和not in,会导致数据库引擎放弃索引进行全表扫描;
尽量避免在字段开头模糊查询%、like等,会导致数据库引擎放弃索引进行全表扫描;
尽量避免进行null值的判断,会导致数据库引擎放弃索引进行全表扫描;等。
数据库中存在几种索引?他们各自的特点和应用场景是什么?
主键索引(PRIMAY KEY):设定为主键后数据库会自动建立索引
唯一索引(UNIQUE):索引列的值必须唯一,但允许有空值
复合索引:即一个索引包含多个列
常规索引(INDEX)
全文索引(FULLTEXT):搜索引擎使用的一种关键技术
数据库系统的组成成分是什么?最常用的是哪三个?他们的具体含是什么?
数据库系统由数据库、数据库管理系统、应用系统、数据库管理员和用户等组成。其中数据库(DB),数据库管理系统(DBMS)和数据路管理员是比较重要的。
数据库(DB)是长期储存在计算机中的、有组织的、可共享的数据的集合。
数据库管理系统(DBMS)是数据库管理软件,用于建立、知运用和维护数据库道,它位于用户和操作系统之间。
JVM中内存分为哪几个区域?
Jvm是Java虚拟机,运行时数据分为以下区域:程序计数器(Program Counter Register)、Java栈(VM Stack)、本地方法栈(Native Method Stack)、方法区(Method Area)、堆(Heap)。
标题
Java中的堆内存和栈内存的区别是什么?
栈:为编译器自动分配和释放,如函数参数、局部变量、临时变量等等;
堆:为成员分配和释放,由程序员自己申请、自己释放。否则发生内存泄露。典型为使用new申请的堆内容;
应用程序所有的部分都使用堆内存,然后栈内存通过一个线程运行来使用;
栈内存是生命周期很短的,然而堆内存的生命周期从程序的运行开始到运行结束;
和堆内存比,栈内存要小的多,因为明确使用了内存分配规则(LIFO),和堆内存相比栈内存非常快。
Java中的异常有哪些?
运行时异常:程序执行过程中出现错误调用,如编译报错
检查性异常:涉及try-catch,如在输入输出添加try语句,以便在执行过程中检查
自定义异常:已有异常类型不能说明问题,需自定义,从相关异常类继承
JVM、JRE、JDK区别联系
JVM :Java Virtual Machine) Java 虚拟机。 是 Java 能够跨平台的核心;
JRE :(Java Runtime Environment)Java 运行时环境。它主要包含两个部分,jvm 的标准实现和 Java 的一些基本类库。它相对于 jvm 来说,多出来的是一部分的 Java 类库;
JDK :(Java Development Kit)Java 开发工具包。jdk 是整个 Java 开发的核心,它集成了 jre 和一些好用的小工具。
JDK>JRE>JVM:它们是包含关系(层层嵌套)。
用过哪些查找算法,特点是什么?
用过哪些树,各自的应用场景是什么?