腾讯微信支付2020暑期实习二面、三面面经

微信支付面试已面过三轮,所以在这里总结一下二、三面面经,大家一起交流学习!

二面

1、上来就做题!都没自我介绍!?

公司员工每天上下班需要进行打卡操作,工作时间为早上9点到晚上5点。迟到或者早退半小时当天按旷工处理。hr能查看所有员工的打卡信息,员工只能查看自己的打卡信息。
请编写一个能支持以上场景的程序。

/**
 * 以下代码是简单伪代码实现
 * 当时没有考虑并发,面试官没有提
 */
public class Time {
    private DataTime firstTime;
    private DataTime lastTime;
    
    public void setFirstTime(DataTime firstTime){
        this.firstTime  = firstTime;
    }
    public void setLastTime(DataTime lastTime){
        this.lastTime  = lastTime;
    }
   
}

Public class Person{
    private Time personTime;
    private boolean isLate;
    // 伪代码
    public void firstCall(){
        personTime.setFirstTime(currentTimeMillis());
        //如果超过九点半则记为旷工 
        if(currentTimeMillis()){
            this.isLate = true;
        }
    }
    
    // 伪代码
    public void lastCall(){
        personTime.setLastTime(currentTimeMillis());
        //如果早于下午4:30就记为旷工 
        if(currentTimeMillis()){
            this.isLate = true;
        }
    }
    
    //hr获取打卡时间
    public Time getTime(){
        return this.personTime;
    }
    //获取是否旷工
    public boolean isLate(){
        return this.isLate;
    }
}

2、项目介绍、难点

项目阶段全程我在说,说完之后问了一下细节,为什么消息队列使用Redis,有了解过其他的吗
我提了一下Rabbitmq

3、项目中的sql优化问题

1、索引优化
2、联合查询优化

4、索引底层实现,为什么采用B+树实现?

1、B+树
2、多路搜索、数据在叶子节点,契合磁盘存储原理,局部性原理和预读取


5、那你知道B+树是几层吗?

读者可以参考这两篇文章:
https://blog.csdn.net/qq_41999455/article/details/106138619
https://blog.csdn.net/qq_41999455/article/details/104946754

6、MySQL事务有用过吗?

讲了一下几种隔离级别的使用

7、那语言这块用什么多一些?C++写过吗?

因为我简历上写了Java C++ Go,但是Java用的最多,C++没有写过完整项目。。。

8、Java中的map有哪些?

HashMap hashTable

9、它们之间什么区别?

1、线程安全问题
2、扩容机制不同
3、Hash值计算不一样
4、HashMap允许null做键值,hashtable不允许null做键值

10、有了解过Java中的NIO吗?原理是什么?

1、基于直接内存实现
2、NIO底层原理,同步非阻塞的IO模型,它是面向缓冲区的

11、Java的内存数据区介绍一下

讲了一下Java的运行时数据区,各类数据存储

12、Linux中的IO多路复用知道吗?讲一下

从select、poll、epoll详细说了一下底层实现
这一块希望读者可以深入了解一下,与内核相关

13、分布式有了解过是吧?知道分布式事务吗?CAP?讲一下

1、分区容错性、高可用性、数据一致性;
2、三者不能同时满足,一般的分布式系统都会优先满足高可用、放弃强一致性选择最终一致性
3、从单应用架构的事务说起,介绍分布式事务的出现意义,目前分布式事务常用的2PC、3PC都讲了一下

14、除过2PC、3PC还有什么协议算法呢?

paxos算法以及zookeeper使用的ZAB协议算法

15、有实际场景应用过吗?

16、前端用过是吧,能说一下吗?

后台开发问我全栈。。。
前端都是很久之前写过的简单页面了。。。

17、那你知道目前哪些组件、框架比较好吗?

提了一下vue,我没用过。。。

18、编译原理学过了吗?

还没有,这学期才开。。

19、那今天就这样吧,后续会有人联系你下一面。

三面 (3.27)

1、自我介绍
2、时间复杂度为O(nlgn)的排序算法都有哪些呢?

快排、归并、堆排序

3、快排是稳定的吗?

不是稳定的

4、稳定是指什么意思?

在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的

5、算法题:整数无序双向链表可以转换为排序二叉树(能不能、为什么能、怎么做)

面试官要求不要一棵树的空间,我没想到。。还是太菜

6、Linux进程的通信方式有哪些?

有名管道、无名管道、消息队列、共享内存

7、管道、消息队列、共享内存它们三者哪个开销最小?

原谅我个菜鸡没了解这么深,所以就以自己理解说了管道最小。。。
“那为什么管道相比其他两个开销小呢?“
emmm,扯了一些有的没得。。
补充:共享内存开销最小读者可以看这一篇文章详细了解

8、网络了解吧,TCP为什么是三次握手但挥手四次呢?

tcp是全双工通信,其次谈到了close-wait状态

9、http是那层协议?

应用层

10、那你知道https吗,是怎么实现的?

在http基础上做了ssl、tls

11、那https的数据是怎么加密的呢

证书获取阶段是非对称加密、数据传输阶段是对称加密,详细说了一下流程

12、我们一般使用sleep让进程睡眠,那我们能不能做到微妙级别的sleep呢?

这个我不知道啊。。所以就扯操作系统的操作性能和线程切换时间,认为可以达到微妙。。。

13、MySQL索引知道吧,它的索引结构是什么呢?

hash、B+树

14、现在有一个联合索引(A,B),那么 A、B、(A,B)三者谁能够命中索引呢?

结合索引的最左前缀特性,A、(A,B)能够命中

15、那(A、B)这个联合索引的B+树结构是怎样的呢?

这里不太懂,我说的是根节点为A,子节点为B的B+树

16、有什么想问我的吗?

总结

自己对于一些东西的底层还是没有理解透,理解不到位,总的来说微信三面给人感觉更底层一些,面试官都要求说到”是什么,怎么做,为什么这么做“,继续努力吧!
面试官让等通知,希望菜鸡有机会吧,许愿!

你可能感兴趣的:(笔经面经)