微信支付面试等了好久,之前面过一次,结果现在到官网流程了,好迷。。。不知道是一面还是二面,本来是牛客视频,结果面试官网络不好,牛客写完代码后换电话了。
面试题
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/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、那今天就这样吧,后续会有人联系你下一面。