普联科技
一面(20分钟):
项目;
SSM框架 IOC;
单例模式;
多线程;
线程间通信;
线程池;
TCP三次握手、四次挥手;
链表有环;
环的入口;
倒叙遍历链表;
解:
private static void reversePrint(ListNode node){
if (node.next!=null)
{
reversePrint(node.next);
}
System.out.print(node.val+" ");
}
递归;
Stack Overflow;
二叉查找树;
快排;
归并排序;
二面(30分钟):
上来就是两个智力题,抛硬币吃苹果,捉狐狸。。。蒙了。。。
多线程
synchorinized原理
通信原理(?看我专业是电信。。。)
两道编程题
爬楼梯,
输入a1,a2,...,an,b1,b2,...,bn, 在O(n)的时间,O(1)的空间将这个序列顺序改为a1,b1,a2,b2,a3,b3,...,an,bn, 且不需要移动,通过交换完成,只需一个交换空间。
三面(8分钟):
闲聊。。。
二面答得很差,感觉gg。
第 二天
蘑菇街凉经
- rpc通行原理
解:
RPC 原理:
实现 RPC 的程序包括 5 个部分:User、User-stub、RPCRuntime、Server-stub、Server。
user 就是发起 RPC 调用的 client ,当 user 想发起一个远程调用时,它实际是通过本地调用 user-stub。 user-stub 负责将调用的接口、方法和参数通过约定的协议规范进行编码并通过本地的 RPCRuntime 实例传输到远端的实例。远端 RPCRuntim 实例收到请求后交给 server-stub 进行解码后发起本地端调用,调用结果再返回给 user 端。
stub:为屏蔽客户调用远程主机上的对象,必须提供某种方式来模拟本地对象,这种本地对象称为存根(stub),存根负责接收本地方法调用,并将它们委派给各自的具体实现对象。
- mq如何保证消息顺序?
出现不顺序的场景:
解:一个queue,有多个consumer去消费,这样就会造成顺序的错误,consumer从MQ里面读取数据是有序的,但是每个consumer的执行时间是不固定的,无法保证先读到消息的consumer一定先完成操作,这样就会出现消息并没有按照顺序执行,造成数据顺序错误。
一个queue对应一个consumer,但是consumer里面进行了多线程消费,这样也会造成消息消费顺序错误。
保证消息顺序性的措施:
拆分多个queue,每个queue一个consumer,就是多一些queue而已,确实是麻烦点;这样也会造成吞吐量下降,可以在消费者内部采用多线程的方式取消费。
或者就一个queue但是对应一个consumer,然后这个consumer内部用内存队列做排队,然后分发给底层不同的worker来处理
https://www.cnblogs.com/Mr-Elliot/p/11525484.html
- rabbitmq与kafka
- 分库分表如何分
- spring生命周期
- mabatis原理
第三天
顺丰科技
- 项目实现了哪些功能
- 怎么设计一个秒杀架构
- 项目中用的mysql锁是什么,幂等性?乐观锁?
- MQ作用
- MQ底层原理
- MQ消息丢失/重复
- mysql事务特性
- mysql默认隔离级别
解;https://www.cnblogs.com/shoshana-kong/p/10516404.html
- MVCC原理
- 如何查看执行计划 explain 主要看哪些字段
- 了解redis集群嘛
- 怎么保证哨兵集群可靠性
- redis主从复制
https://www.cnblogs.com/qingmuchuanqi48/p/11154182.html
- redis缓存一致性问题
- 有没有了解过CAP
- 分布式开发会存在哪些问题
解:
一致性问题
分布式系统中的一致性指应用系统的一致性和数据的一致性。多个系统之间互相通信,就有可能遇到例如:
(1) 调用超时:系统A调用系统B超时,系统A得到超时反馈,但不确定系统B是否已经处理结束,就会造成不一致。
(2) 掉单:系统A和系统B分别为对方的上下游,如果系统A中存在一个订单,而系统B中不存在,就会导致掉单。
(3) 缓存与数据库的不一致:面对海量的访问请求,我们经常会需要在数据库前加一层缓存,这个缓存与数据库之间如何保证一致性。
稳定的负载均衡
当海量的并发请求过来时,如何保证负载均衡可以稳定地工作并转发请求?
分布式日志
在分布式系统下,用户完成一次调用的日志将散列在多台机器上,那么日志如何追踪?
- 了解微服务嘛
第四天
shine
题外话:3月底的时候shopee二面和字节三面挂了,算法和操作系统不怎么好,老师又催,本来想直接结束春招的,最近搞完毕业论文和系统,打算重新冲一下,有幸获得内推的机会,暂时没有笔试
5.5下午qq视频面试,2020应届校招
1.springbean生命周期
2.代码级别的读写分离实现,mybatis插件实现
https://www.cnblogs.com/selinamee/p/7110072.html
3.springboot自动装配
4.事务隔离级别
5.mysql引擎
6.sql优化
7.hashmap,concurrenthashmap(如何线程安全,resize,1.7,1.8的区别)
8.redis数据结构,分布式锁
9.项目
5.6二面
二面基本都是围绕着项目以及对应的一些实际场景问,也包括你用过的一些东西,会问为什么这样做,比较偏向于实际业务
1.项目,你遇到的比较大的困难是什么
2.mybatis插件,代码级别读写分离怎么做
3.sql优化
4.mq作用,结合场景举例,后面扯到分布式事务,主要是实现最终一致性,结合一些例子来谈,saga,本地消息表,rocketmq半消息
5.es有什么用?线上问题,内存过大、logstash同步问题?我没实际处理过,canal原理
6.布隆过滤器
还有一些比较细的点比如lua的table??其他的忘记了,反正会结合你简历提及的点去问,这场也是qq,不过是语音面试。
感觉面试官经验很丰富,面试体验像一面一样也很棒,后面问的问题也很耐心解答,整场面试33分钟
5.7三面
没有技术问题
自我介绍
绩点
职业规划
家庭背景,广州亲戚(感觉是看能不能在广州长期发展)
怎么看b端和c端
有没有了解过我们shein
大概10分钟左右,我之前看的面经,第三面都不是问这些的,没事前准备,答得不好
5.8问了hr,三面挂了,确实答得不好
第五天
vivo提前批
之前心烦意乱没有处理好
6月9号的面试
大概面了半个小时
1.面向对象三个特性
封装继承多态,我还加了个抽象blabla;
2.JVM,JVM分区,GC算法,堆和栈的区别(我没答好)
3.进程和线程区别,线程间通信和进程间通信
进程间通信答了一些,信号信号量socket管道命名管道共享内存blabla
线程间通信傻了(其实就是锁,volatile这些,我回答了ThreadLocal,没继续问)
4.项目做了哪些,简单说了说,问印象最深的项目是哪个,
答了个没写简历上的电商项目(太大了……跟着教程学的架构师项目,我哪敢写)
5.安卓会不会
直接说没准备
6.Java和C++区别
没答上来(我觉得这问题问的很随意……我回答了Java没有指针,有更好的框架,天生就是面向对象blabla,标准答案应该再说说GC保证了内存不泄露,还有Java不支持多继承blabla)
7.笔试题哪些影响深刻
简单说了说
最后提问,说Java基础要加强……
……
…………
………………
……………………
…………………………
………………………………
……………………………………
(杨辉三角懵逼)
感想就是怪怪的。
线程间通信我懵逼了,但是如果真的要问的话,AQS,Synchronized,volatile,ThreadLocal,CyclicBarrier,Themaphore这些我也了解啊;
提到项目时候面试官表示我应该把电商项目写上,但是感觉要是想问的话还是可以问挺多的,我提到了项目用了MySQL,Redis,MongoDB都提到了,一个没有问;
也没有叫我手撕代码;
要说Java基础的话,一些经典题都没问,比如HashMap和HashTable区别、HashMap底层结构、StringBuilder和StringBuffer区别,一个都没问;
也有可能就是我说话太快印象不好吧。
但感觉可能这个面试官对安卓更熟练?