2019年5月24日
上午:必要商场
-
数组中原地删除特定值元素,手写代码?
原地删除,删除之后应该让剩余元素往前提,最后补0
如果不是原地删除,可以新申请一块空间存放新数组,可以这样:public int[] delete2(int[] arr, int i) { if (arr.length <= 0 || arr == null) { return null; } int a = 0; for (int j = 0; j < arr.length; j++) { if (arr[j] != i) { arr[a++] = arr[j]; } } if (a < arr.length) { for (int j = a; j < arr.length; j++) { arr[j] = 0; } } return arr; }
public int[] delete(int[] arr, int i) { if (arr.length <= 0 || arr == null) { return null; } int a = 0; int[] newArr = new int[arr.length]; for (int j = 0; j < arr.length; j++) { if (arr[j] != i) { newArr[a++] = arr[j]; } } return newArr; }
-
数组中在某一位置插入一元素
应该新申请一块空间存放新数组,先将原数组元素拷贝入新数组,再将新元素索引后的元素后移一位,再将新元素插入进去。public int[] insert(int[] arr, int index, int value) { if (arr == null || arr.length <= 0) { return null; } if (index > arr.length - 1) { return null; } int[] newArr = new int[arr.length + 1]; for (int i = 0; i < arr.length; i++) { newArr[i] = arr[i]; } for (int i = arr.length - 1; i >= index; i--) { newArr[i + 1] = arr[i]; } newArr[index] = value; return newArr; }
-
对哪些技术比较熟悉?
-
Nginx做https协议的加密该怎么做?
Nginx开启https(服务器端) -
简单介绍下https?
HTTPS云云 -
https证书?请求过来的过程,证书发放与证书认证的过程,谁认证了谁?
证书是由证书发放机构(CA)发放给客户端,客户端使用浏览器内置的CA证书列表验证证书,如果证书有问题,则发出警告。 -
对缓存了解过多少?了解过什么缓存(浏览器缓存)
-
动态代理了解过吗?有什么应用场景?AOP的应用场景? 切面、切入点、连接点 ?打印日志的业务模型?
-
有没有遇到过内存溢出的异常?
-
JVM有哪些内存?
-
内存溢出可以修改哪些JVM的内存?
-
用的是什么数据库?组合索引了解过吗?加索引的时候怎么加?什么情况下加索引没有命中?
索引的准则:
通常在这些列上建索引- 在经常需要搜索的列上,可以加快搜索的速度
- 在作为主键的列上,强制该列唯一性和组织表中数据的排列结构(主键会将【表】的数据格式转化成【索引(平衡树)】的格式)所以主键也可以理解为是一种索引
- 在经常用在连接的列上,这些列往往是一些外键,可以加快连接的速度。
- 在经常需要根据范围进行搜索的列上建索引,因为索引已经排序,其指定的范围是连续的。
- 在经常需要排序的列上建立索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间。
- 在经常使用在where子句中的列上建立索引,加快条件的判断速度。
不应该建立索引的列
- 在查询中很少使用的列不要建索引。这是因为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。
- 对于那些只有很少值的列也不要建立索引。这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索速度。
- 对于那些定义为text, image和bit数据类型的列不应该增加索引。这是因为,这些列的数据量要么相当大,要么取值很少。
- 当修改性能远远大于检索性能时,不应该创建索引。这是因为,修改性能和检索性能是互相矛盾的。当增加索引时,会提高检索性能,但是会降低修改性能。当减少 索引时,会提高修改性能,降低检索性能。因此,当修改性能远远大于检索性能时,不应该创建索引。
-
什么情况下加索引没有命中?
- 如果条件中有or 即使条件中带索引也不会使用
注意:要想使用or,又要索引有效,需要在or中所有条件的列上加索引 - like查询以%开头,索引不会命中
有一种情况下,只查询索引列,才会用到索引,但是这种情况下跟是否使用%没有关系的,因为查询索引列的时候本身就用到了索引 - 如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
- 查询条件中,在索引列上使用函数(+, - ,*,/), 这种情况下需建立函数索引
- 没有查询条件,或者查询条件没有建立索引
- 采用 not in, not exist
- 如果条件中有or 即使条件中带索引也不会使用
重要!!面试技巧,如何通过索引说数据库优化能力
- SpringMVC中@controller和@service用反了会发生什么现象?
下午2:狐狸金服
- 项目是不是多机部署(Nginx)
- 算法这块都接触过哪些?
- 设计模式主要接触过哪些?
- 做的项目有没有牵扯并发的操作?
- 说说项目中感觉比较复杂的业务逻辑,是通过怎样的设计去实现的?
- 如果要设计一个商城的系统,中间会涉及到库存,该怎么去设计?高并发的时候前端该怎么控制?有没有一种机制去控制这个问题?
- 缓存相关的用过没有?
- 数据库锁有没有用过?简单说一下对数据库锁的了解?数据库锁主要是在什么语句里面?
- update语句是有两个过程的,先加读锁,再加写锁?
- 项目当中有没有用过什么设计模式?工厂模式?
网友评论