微众银行面试

2023-05-16

机缘巧合,其实并没有换工作的想法,却收到了微众的面试邀请,就想着去看看当是增长见识吧,因为已经好久没准备面试的事情了,而且微众毕竟作为腾讯系的看起来好像也不错。说实话那边离地铁站是真的远,不过办公环境确实很好,参照10楼的随手拍。By the way,在那边居然碰到一个大学同学,之前软件学院的,他也在面试。

废话不多说直接进入主题吧,整个过程感觉答得也不是很好,但也应该没有很差吧吧吧,全局大部分都是一些基础问题,下面根据楼主记忆罗列一下。

1.自我介绍

2.手写快速排序,冒泡排序

冒泡排序思想:相邻元素进行比较,左边元素大于右边元素则交换元素位置,这样一轮下来就会把最大的拎出来

public void bubbleSort(Integer[] arr, int n) {
        if (n <= 1) return;       //如果只有一个元素就不用排序了
 
        for (int i = 0; i < n; ++i) {
            // 提前退出冒泡循环的标志位,即一次比较中没有交换任何元素,这个数组就已经是有序的了
            boolean flag = false;
            for (int j = 0; j < n - i - 1; ++j) {        //此处你可能会疑问的j<n-i-1,因为冒泡是把每轮循环中较大的数飘到后面,
                // 数组下标又是从0开始的,i下标后面已经排序的个数就得多减1,总结就是i增多少,j的循环位置减多少
                if (arr[j] > arr[j + 1]) {        //即这两个相邻的数是逆序的,交换
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                    flag = true;
                }
            }
            if (!flag) break;//没有数据交换,数组已经有序,退出排序
        }
    }

快速排序思想:选取一个基数,保证左边元素小于该基数,右边元素大于该基数。开始从右边尾部向左移动,如果发现某个数小于基数就停下来,然后左边头部开始向右移动,发现某个数大于基数停下来,交换左右两数。重复该过程。

public void quickSort(int[] arr, int start ,int end){
        if (start > end){
            return;
        }
        int i = start;
        int j = end;
        int temp = 0;
        int guard = arr[start]; // guard为基准位

        while (i < j){
            // 右边元素大于基数,则一直往左移
            while (arr[j] >= guard && i < j){
                j--;
            }

            // 左边元素小于基数,则一直往右移
            while (arr[i] <= guard && i < j){
                i++;
            }

            // 交换元素
            if (i < j){
                temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }


        }

        // 最后将基数与i==j的位置进行交换
        arr[start] = arr[i];
        arr[i] = guard;

        //递归调用左半数组
        quickSort(arr, start, j-1);
        //递归调用右半数组
        quickSort(arr, j+1, end);
    }

3.手写单例模式

// 线程安全的懒汉式单例
public class Singleton {
 
    //使用volatile关键字防止重排序,因为 new Instance()是一个非原子操作,可能创建一个不完整的实例
    private static volatile Singleton singleton;
 
    private Singleton() {
    }
 
    public static Singleton getSingleton() {
        // Double-Check idiom
        if (singleton == null) {
            synchronized (Singleton.class) {       // 1
                // 只需在第一次创建实例时才同步
                if (singleton == null) {       // 2
                    singleton = new Singleton();      // 3
                }
            }
        }
        return singleton;
    }
}

说明:
线程 1 进入 getSingleton() 方法。 
由于 singleton为 null,线程 1 在 //1 处进入 synchronized 块。 
线程 1 被线程 2 预占。
线程 2 进入 getSingleton() 方法。
由于 singleton仍旧为 null,线程 2 试图获取 //1 处的锁。然而,由于线程 1 持有该锁,线程 2 在 //1 处阻塞。
线程 2 被线程 1 预占。
线程 1 执行,由于在 //2 处实例仍旧为 null,线程 1 还创建一个 Singleton 对象并将其引用赋值给 singleton。
线程 1 退出 synchronized 块并从 getInstance() 方法返回实例。 
线程 1 被线程 2 预占。
线程 2 获取 //1 处的锁并检查 instance 是否为 null。 
由于 instance 是非 null 的,并没有创建第二个 Singleton 对象,由线程 1 创建的对象被返回。

4.常用的集合有哪些,ArrayList与LinkedList区别

5.用过哪些设计模式?动态代理是怎么实现的

动态代理基于反射

6.SQL优化方法,explain看索引生效看的是哪几个指标

方向大体可以为:优化查询SQL,优化索引,优化数据库设计,较好的SQL优化博客

7.redis分布式锁

快速搞懂分布式锁

8.HashMap与HashTable区别,HashMap底层实现

父类不同,安全性不同。 

HashMap底层是一个Entry数组,当发生hash冲突的时候,hashmap是采用链表的方式来解决的,在对应的数组位置存放链表的头结点。对链表而言,新加入的节点会从头结点加入

9.spring cloud用过吗?

springcloud是微服务架构的集大成者,将一系列优秀的组件进行了整合。基于springboot构建,对我们熟悉spring的程序员来说,上手比较容易。
通过一些简单的注解,我们就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。
SpringCloud的组件相当繁杂,拥有诸多子项目。重点关注Netflix
常用的如
服务发现——Netflix Eureka
客服端负载均衡——Netflix Ribbon
断路器——Netflix Hystrix
服务网关——Netflix Zuul
分布式配置——Spring Cloud Config

10.JDK用的哪个版本,1.7和1.8版本的HashMap实现有什么不一样

在JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用位桶+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间。

11.AOP

12.多线程的实现方式

13.数据库连接池

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微众银行面试 的相关文章

随机推荐

  • insert语句中sequence的使用方法

    我们常常在表中需要插入一些自动增长的值 一方面 我们可以手动添加这些值 xff0c 另一方面 oracle提供的sequence可以帮助我们实现插入的值自动增长 而不需要我们手动的提供值 我们需要做的就是设置好sequence的初值和增长值
  • ubuntu20-mate系统树莓派4B不连接显示器无法启动的问题

    官方更新了ubuntu20 mate xff0c 下载地址 xff1a https ubuntu mate org download armhf 于是我就给树莓派4B装上了 xff0c 配置好了vnc 发现不连接显示器树莓派就无法启动 xf
  • qt如何获取qwebengine在“应用程序输出”中输出的内容

    在webengineview中点击超链接后会在qt creator的 应用程序输出 栏中输出超链接内容 xff0c 如何获取这些输出的显示内容呢 xff1f xff08 既然在控制台中输出了 那么web中的信息一定传到qt了 xff0c 如
  • 判断单链表中是否存在回环

    判断单链表是否存在回环原理很简单 xff0c 即假设有两个指针p1 xff0c p2 在每次循环的时候 xff0c p1先走一步 xff0c p2走两步 xff0c 直到p2碰到空指针或两者相等时循环结束 xff0c 如果两个指针相等则说明
  • linux yum安装卸载jdk8

    1 gt 安装 1 yum y list java 列出jdk列表 2 yum install y java 1 8 0 openjdk demo x86 64 xff08 安装这个java version 正常显示 xff0c 但是jav
  • 使用Document解析xml

    1 引入maven jar包 lt dependency gt lt groupId gt dom4j lt groupId gt lt artifactId gt dom4j lt artifactId gt lt version gt
  • 【math】 向量运算:叉乘

    文章目录 1 定义2 几何意义3 拓展应用 1 定义 c 61 a b 向量的叉乘 xff0c 即求同时垂直两个向量的向量 xff0c 即c垂直于a xff0c 且c垂直于b 假设向量a 61 a x a y a z b 61 b x b
  • 基于Mahout的电影推荐网站的设计与实现(JAVA语言实现)

    1 概要 本系统是一个以Mysql为数据库 xff0c 利用Java servlet开发的基于B S结构的电影推荐网站 服务器是Apache Tomcat xff0c 推荐库是Apache Mahout xff0c 在Eclipse环境下进
  • Java与设备(PLC)通信

    通信名词 上位机 指可以直接发出操控命令的计算机 xff0c 一般是PC host computer master computer upper computer 控制者和提供服务者是上位机 xff1b 工控机 工作站 触摸屏可作为上位机
  • DAMA学习笔记

    第1章 数据管理 1 1 引言 1 数据管理 xff1a 为了实现数据价值 xff0c 制定计划 制度并执行 监督 2 数据管理专业人员 xff1a 技术人员 xff08 数据库管理员 网络管理员 程序员 xff09 和业务人员 xff08
  • 2023 学习日志

    2023 01 03 mybatis源码学习 学习视频 xff1a https www bilibili com video BV1Tp4y1X7FM p 61 1 amp vd source 61 cc82a52a9b9b8b31eca3
  • oracle create view语法

    视图实际上是一个或多个表上的预定义查询 xff0c 这些表称为基表 视图并不存储数据 xff0c 只是在查询视图时才访问基表 视图的优点 xff1a 限制用户只能通过视图检索数据 xff0c 对用户屏蔽基表 可以将复杂的查询编写为视图 xf
  • EL表达式两个foreach嵌套循环

    集合List中加List泛型的泛型 List lt RiskEvaSuitQuestion gt riskEvaSuitQuestionList 61 riskEvaSuitQuestionService getQueList 100003
  • JQuery通过radio,select改变隐藏显示div

    1 xff09 select下拉框控制div的隐藏与显示 lt script gt function checkYear var selectValue 61 34 select name 61 39 periodType 39 34 va
  • 开科唯识笔试

    对于这次的笔试 xff0c 我只想说BiShi 几道编程题加一道SQL题 1 找出所有三位数中的水仙花数 public void getNarcissusNums int g 61 0 s 61 0 b 61 0 sum 61 0 for
  • JDBC批量插入

    最近项目中有用到JDBC技术 xff0c 存在大量数据要进行插入 xff0c 通过研究采用批量插入速度快的不是一点点 下面简单比较了一下普通插入与批量插入5W条数据的时间效率 常规插入 xff1a 耗时12952ms public stat
  • exe应用程序无法启动,因为应用程序的并行配置不正确

    问题 xff1a exe应用程序无法启动 xff0c 因为应用程序的并行配置不正确 有关详细信息 xff0c 请参阅应用程序事件日志 xff0c 或使用命令行 sxstrace exe 工具 原因查找 xff1a 1 xff09 开始 所有
  • TortoiseSVN is locked in another working copy

    TortoiseSVN提交报错 TortoiseSVN is locked in another working copy 原因 xff1a 可能是因为打开了多个commit会话 xff0c 然后又去修改了提交文件的内容 xff0c 导致文
  • Java对接企业微信

    最近需要对接企业微信 xff0c 例如将风险测评结果推送给企业微信中对应的用户 xff0c 然后用户对结果进行查看与确认操作 xff0c 所以这里就涉及到两方面 xff1a 1 xff09 将外部系统内容推送到企业微信 xff1b 2 xf
  • 微众银行面试

    机缘巧合 xff0c 其实并没有换工作的想法 xff0c 却收到了微众的面试邀请 xff0c 就想着去看看当是增长见识吧 xff0c 因为已经好久没准备面试的事情了 xff0c 而且微众毕竟作为腾讯系的看起来好像也不错 说实话那边离地铁站是