面试题总结(2)

1.redis memcache es

es的查询功能很强大 但是查询语dsl言很麻烦 用插件(elasticsearch-sql)

es是一个高扩展 开源的全文搜索和分析引擎 可以准确地快速存储 搜索 分析海量的数据

解决对大规模数据检索的要求 分布式全文检索

redis支持的数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)

redis是非关系型数据库 可持久化(可持久化就是把内存的数据写到磁盘中 防止服务器宕机 内存数据丢失)

java使用redis基本操作

string:set(key value) get

list

rpush (key value)在名称为key的list尾部添加一个元素value

lpush(key value)在名称为key的list头部添加一个元素value

llen(key)返回名称为key的list长度

lrange(key start end)

hgetAll(key)返回哈希表key中,所有的域和值

hash

hset(key field value)将哈希表key中的域field的值设为value

hget(key field)返回哈希表key中给定域field的值

set

sadd(key member)将member元素加入到集合key当中

srem (key member)移除集合中的member元素

smembers(key)返回集合key中的所有成员

sismember(key member)判断member元素是否是集合key的成员。是(true),否则(false)

Jedis redis = new Jedis ("192.168.10.64",6379);//连接redis

2. 如何创建线程 为何创建线程

1.避免阻塞

2.提高资源利用率 提高程序处理效率

3.提高cpu利用率 提升软件运行速度

创建线程的两种方式:继承thread类 实现runnable接口

必须重写润方法 在润方法中定义需要执行的任务

创建好自己的线程类之后 就可以创建线程对象了 通过start方法启动线程

3. java项目部署

java项目使用maven插件和docker实现自动打包部署运行

使用maven的打包插件maven-assembly-plugin以及docker的打包功能实现自动打包部署并运行的功能

3. 联合索引

联合索引的最左前缀匹配原则即最左优选

例如:key test_col1_col2_col3 on test(col1_col2_col3))

联合索引test_col1_col2_col3实际建立了(col1),(col1,col2),(col1,col2,col3)三个索引

4.事务

数据库事务

四大特性ACID

原子性atomicity:指事务包含的所有操作要么全部成功 要么全部失败回滚

一致性consistency:指事务必须使数据库从一个一致性状态变换到另一个一致性状态 也就是说一个事物执行之前和执行之后都必须处于一致性状态

隔离性isolation:是指当多个用户并发访问数据库时比如操作同一张表时 数据库为每一个用户开启的事务 不能被其他事务的操作打扰 多个并发事务之间要相互隔离

持久性durability:是指一个事物一旦被提交了 那么对数据库中的数据的改变是永久性的 即便在数据库系统遇到故障的情况下 也不会丢失提交事务的操作

5. java异常

error是无法处理的异常

exception 比如nullpointerexception

在java中 如果需要处理异常 必须现对异常进行捕获 然后对异常情况进行处理

使用try catch关键字即可

try包围的代码说明可能发生异常 一旦发生异常 便会被catch捕获到 然后在catch块中进行异常处理


try { //执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行。否则不会执行catch里面的内容 } 

catch { //除非try里面执行代码发生了异常,否则这里的代码不会执行 } 

finally { //不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally } 

第二种处理异常是抛出异常 让调用者处理 自己不做具体的处理 用throw和throws关键字

throws在方法函数头 throw在函数体

throws表示出现异常是一种可能 并不一定会发生

throw是抛出异常 一定会异常

6. list set

list set都是collection的子接口

set不允许重复 lise允许

set无序 list有序

set只能有一个null Set底层是Map HashMap可以有1个key为null的元素,TreeMap不能有key为null的元素

list可以存储多个null

7. object类

registerNatives()   //私有方法
getClass()    //返回此 Object 的运行类。
hashCode()    //用于获取对象的哈希值。
equals(Object obj)     //用于确认两个对象是否“相同”。
clone()    //创建并返回此对象的一个副本。 
toString()   //返回该对象的字符串表示。   
notify()    //唤醒在此对象监视器上等待的单个线程。   
notifyAll()     //唤醒在此对象监视器上等待的所有线程。   
wait(long timeout)    //在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或        者超过指定的时间量前,导致当前线程等待。   
wait(long timeout, int nanos)    //在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。
wait()    //用于让当前线程失去操作权限,当前线程进入等待序列
finalize()    //当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

猜你喜欢

转载自blog.csdn.net/damei2017/article/details/87929002