美文网首页
必要商城+狐狸金服

必要商城+狐狸金服

作者: wuhuaguo丶 | 来源:发表于2019-06-07 10:44 被阅读0次

    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的内存?

    • 用的是什么数据库?组合索引了解过吗?加索引的时候怎么加?什么情况下加索引没有命中?
      索引的准则:
      通常在这些列上建索引

      1. 在经常需要搜索的列上,可以加快搜索的速度
      2. 在作为主键的列上,强制该列唯一性和组织表中数据的排列结构(主键会将【表】的数据格式转化成【索引(平衡树)】的格式)所以主键也可以理解为是一种索引
      3. 在经常用在连接的列上,这些列往往是一些外键,可以加快连接的速度。
      4. 在经常需要根据范围进行搜索的列上建索引,因为索引已经排序,其指定的范围是连续的。
      5. 在经常需要排序的列上建立索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间。
      6. 在经常使用在where子句中的列上建立索引,加快条件的判断速度。

      不应该建立索引的列

      1. 在查询中很少使用的列不要建索引。这是因为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。
      2. 对于那些只有很少值的列也不要建立索引。这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索速度。
      3. 对于那些定义为text, image和bit数据类型的列不应该增加索引。这是因为,这些列的数据量要么相当大,要么取值很少。
      4. 当修改性能远远大于检索性能时,不应该创建索引。这是因为,修改性能和检索性能是互相矛盾的。当增加索引时,会提高检索性能,但是会降低修改性能。当减少 索引时,会提高修改性能,降低检索性能。因此,当修改性能远远大于检索性能时,不应该创建索引。
    • 什么情况下加索引没有命中?

      1. 如果条件中有or 即使条件中带索引也不会使用
        注意:要想使用or,又要索引有效,需要在or中所有条件的列上加索引
      2. like查询以%开头,索引不会命中
        有一种情况下,只查询索引列,才会用到索引,但是这种情况下跟是否使用%没有关系的,因为查询索引列的时候本身就用到了索引
      3. 如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
      4. 查询条件中,在索引列上使用函数(+, - ,*,/), 这种情况下需建立函数索引
      5. 没有查询条件,或者查询条件没有建立索引
      6. 采用 not in, not exist

    重要!!面试技巧,如何通过索引说数据库优化能力

    • SpringMVC中@controller和@service用反了会发生什么现象?
    下午2:狐狸金服
    • 项目是不是多机部署(Nginx)
    • 算法这块都接触过哪些?
    • 设计模式主要接触过哪些?
    • 做的项目有没有牵扯并发的操作?
    • 说说项目中感觉比较复杂的业务逻辑,是通过怎样的设计去实现的?
    • 如果要设计一个商城的系统,中间会涉及到库存,该怎么去设计?高并发的时候前端该怎么控制?有没有一种机制去控制这个问题?
    • 缓存相关的用过没有?
    • 数据库锁有没有用过?简单说一下对数据库锁的了解?数据库锁主要是在什么语句里面?
    • update语句是有两个过程的,先加读锁,再加写锁?
    • 项目当中有没有用过什么设计模式?工厂模式?

    相关文章

      网友评论

          本文标题:必要商城+狐狸金服

          本文链接:https://www.haomeiwen.com/subject/rddmxctx.html