记录下九月面试还记得的一些面试题

本文应辉哥(程序员囧辉)邀请,记录下遇到的面试题

程序员囧辉:现就职于某团,发表过很多很有深度的文章,看他主页就能知道。B站,知乎等常见平台都有其身影,他还有微信公众号,里面有很多他自己的沉淀的pdf,对于他的Synchronized篇,我深读了好多遍,这次面试他的pdf也帮了我很多,感谢辉哥

面试题:

1.字节
一面:

算法 滑动窗口,求连续子数组的和 为指定 target
一道SQL
聊下项目
MySQL索引

二面:

挂了
算法:循环有序数组找中位数

过了两个case,后来知道还是巧合(/(ㄒoㄒ)/~~)

聊的项目,感觉聊不到一块,
可能也是我的储备不够,还需自己加油

再次面:

9月中下旬面的,挂了
算法:求一个字符串中,最先只出现三次的字符 abeeabccdabb
mysql explain 如何关注哪些点? Mysql底层数据结构 B+tree
Synchronized 锁升级,能降级吗
知道Hash索引吗
感觉面的还不错,算法也写了,不知道为啥挂了,应该是没PK过

2.微众
一面:

方法区 JVM咋存储的(蒙圈),对象如何分配
优先队列原理 shiftUp/Down 结构调整实现 PriorityQueue
问的较细 连环深入问

二面:

SpringCloud源码有看过吗
实际场景题,下游服务消费有限制,但是上游量比较大,给一个服务器,和一个数据库怎么解决 (考察填谷削峰)
然后再就是问了项目
主要考察的是实际场景的应用

微众二面技术已过,后面面试流程暂缓,打电话大概说是面试的科室没HC了

3.金蝶
一面:

BIO NIO AIO 原理 还有说到 Netty 注册事件的触发
类加载器 双亲委派模型
工作流的这些,项目的水平鉴权这种(水平鉴权临场想的,所有数据和用户挂钩即可,听面试官聊)
JVM

二面:

聊了下项目,也是实际场景题吧
市场:系统 国产化 替换 toB 做Paas 200 多人 苍穹

三面-HR:

过了,给offer,由于有其他的就拒了

4.顺丰
一面:

HashMap在并发情况下的问题?map结构?
分布式锁各种实现,如何实现
实现两个线程同步 说下具体实现

我回答 ReentrantLock synchronized PV CountDown
面试官回答: 还有Join 等,然后说了他的思路,按照线程状态的转化即可,比如把我们想要之后执行的一个线程放在阻塞态,然后前面的那个线程先执行完,然后再唤醒阻塞状态的线程即可

提了下分库分表
redis存储方式
redis为什么这么快?
也问的较细 连环深入问
还聊了下架构师知识体系分类 等等

二面:

聊自己的项目,做了哪些事情
实际场景的应用,如何确保消息不丢失,最大努力通知(也是分布式事务 的一种)
分片

三面-HR:

过了

5.格力
一面:

挂了,体验最差
zipkin skywalking 问到了不会
暴露外网的为什么还需要 Nginx? 不知道原因
说下项目 Spring cloud
Euraka Feign Ribbon原理
感想:老是问k8s和调用链的问题,说了不会了还是要问,然后直接挂掉走了,没有给反问的机会,可能前面那块不符合面试官预期

6.拼多多
一面:

挂了
聊了项目
Rabbit 和 kafka的选型
我们商户的主体承载
最后是一个算法:
一个data数组,data[0] data[1] data[2] 放了三个不同颜色的球,每次能拿一个球或是两个不同颜色的球,求最少拿球次数
算法最后在面试官引导写了出来
业务做私域拼团,没怎么聊技术

7.腾讯全资子公司 OSIG
一面:

挂了
聊了项目,现场白板描绘服务调用图
算法:大数相乘 (网上有)按照现场当时的思路,算法没写出来

再次面:

过了,拒了后面的面试
算法:和第一次面一模一样的算法,我知道思路(因为上次没面过,直接去搜了),直接说上次做过了,换个
1.写个冒泡排序,冒泡优化,如何体现出了你的优化?
2.n+1长度的数组,存了1~n的数字,数组中只存在一个重复的字符,找出这个字符
说出不同的思路
mysql B+tree sql优化,explain平常注意哪些点,复合索引a,b,c的结构
业务是让去开发一个代码检测基础组件,github上有开源 1.3k star,https://github.com/Tencent/CodeAnalysis

8.蚂蚁
一面:

了解下做过的项目,做的流程,几个阶段之类的。看业务符合直接给过

二面:

算法:树的遍历,让我自己写了个 连续子数组和的最大值,然后自己解释一下
写算法的时候,这个小哥会称赞我的代码细节,能看得出来我体现出来的代码“功力” hahahha
聊了下项目,分布式锁key的设计

三面:高P面试压迫感最强

聊下项目,做了哪些事情,做了哪些优化
个人的职业规划是什么,架构师,如何去实现?
mysql 悲观锁/乐观锁的实现?

面到这里悲观锁说不太明白,直接被面试官怼,没做过就不用在说了,我们坦诚一点,这里感觉直接要被挂了,感觉脸红然后瞬间很失落,好在稳住,然后接着往下答

订单和计费需要最终一致(比如订单和计费)?

以下是我的回答:

  1. 本地一个事务定业务写表 然后同一个事务 写消息队列,然后再提交订单状态为 1
    消费端,幂等,本地事务消费时,回头更改订单状态为 2/3(成功/失败)
    定时调用处于在 订单状态为 0或3 的事务。
    面试官提出了问题:若是消息已写队列成功,但是返回超时,会导致本地事务回滚,怎么办?
    此方案确实会有问题问题,再同一个事务中,若是由于发送消息队列成功,但是返回超时,订单表数据会回滚,但是 消息已经投递出去,这样就有问题
    基于此又有了 2、3两个回答
  2. RocketMQ 事务消息
  3. 要求不用RocketMQ 事务消息,临时想了一个,在1的基础上再分成两个事务,解决1的问题
  • 本地一个事务定业务写表 订单状态为 0
  • 另外一个事务 发送消息到队列 订单状态为 1
  • 消费端,幂等,本地事务消费时,回头更改订单状态为 2/3(成功/失败)
  • 定时调用处于在 订单状态为 1或3 的事务

事后再想,还可以用1,但是在消费端时,可以检查一些订单是否存在,存在再消费,但是此时需要rpc再次去订单服务查订单状态,多了调用

若是订单成功后,需要执行的操作很多,比如跟着物流、库存、计费等操作如何处理呢?

答了消息中间件有Publisher/Subscribe模式,触发的消息投递至消息队列,消费端订阅感兴趣的消息队列即可

Spring的事务,以及传播属性

实质就是数据库的事务,拿的数据库的连接做的,说了常用的传播属性

ThreadLocal知道吗?

ThreadLocal直接描述了源码的中的 ThreadLocal有个内部类 ThreadLocalMap,
Thread类里面有个成员属性 threadLocals既是存ThreadLocal.ThreadLocalMap这个Map的地方,(key是ThreadLocal对象,value是存值)。一个线程一个副本各玩各的不存在安全问题

Spring是如何做到IOC的?

看过源码,答了自己的理解,然后说到源码类 BeanDefinition,BeanDefinitionRegistryPostProcessor 面试官就没让再往下说了

面试官告诫:勿骄勿燥,写的代码还不够多
这次面试感触最深,面试官最深入,中途一味以为要挂时,面到最后说直接给过,然后往下推流程,果然是高P,无敌~

四面-HR:挂了
9.快手
一面:

算法:LRU 注意
分布式事务
分布式锁
设计模式
开发六大原则

卡壳,没答上,只答了个开闭原则、迪米特原则,后面就没答了
事后整理:1.开闭原则、2.依赖倒转,依赖接口抽象而不是一个类、3.接口隔离,接口功能尽量要单一
4.迪米特法则,最少知道原则,减少耦合性、5.聚合复用原则、6.里氏替换原则,对开闭的补充,

类加载流程,类变量是在什么时候赋值的?

这里答错成解析了,应该是在初始化阶段执行了静态代码或变量的赋值,前面的准备阶段,主要是为静态变量赋类型的初始值并且分配内存

设计模式,单例模式如何保证的单例的?

类加载上锁,在《Java并发编程的艺术》书上有写

现在系统远程调用如何调用的?
MySQL索引失效的场景,B+tree,隔离级别
数据库与缓存的一致性?

答了下前东家的延时双删,然后再答了辉哥的里提到的缓存一致性方案《如何保障缓存和数据库的一致性(超详细案例)》 (我也看过一些作者的博客,这篇是我迄今为止看到的最全最好的缓存和数据库一致性讲解与方案实现了,辉哥提到他们团队生产就是这样用的)
然后再问了若是中间件消费一直失败怎么办?我随口提了下死信队列,然后做处理,最后做告警,就没往下问了

面试官告诫:说的有点啰嗦,应该先简洁回答面试官的问题,然后再说其他,面试官挺随和的

二面:

被吊打,问的基本全部不会,说的最多的就是不知道,当时很尴尬
业务优势点
服务治理,你做服务监控优势点在哪,比如说美团做 阿里做?(竞品分析)
集群部署?规模
mysql CPU满了,有哪些情况?
说几个JDK中用到的 设计模式? 前面被问懵这里也卡住

个人感受:

这次遇到了微众,技术面全过,面试流程暂缓;字节KPI面;蚂蚁-HR面挂。就剩下被撕offer情况了hahah。虽然心仪的大厂最终没能进去,但也确实学到了很多,也深刻的意识到了自己的缺陷,自己还需努力的地方。
好了,这次求职经历就先告一段落了,后面要多撕算法,多读原理,注重基础,多写代码,多体会代码。
Gardenias,加油!(自己的笔名,也是栀子的意思)

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值