招银科技二面凉经: 春招以来最差劲的一次面试体验!
刚进面试房间 , 发现留有上一位面试者的代码 和 聊天记录(在本文最后) , 刚开始没当会事,等真正面的时候简直是折磨 !!
先说说整场的面试体验 :
(1). 面试官没开摄像头
(2). 面试官不知道是不是网络不好 ,还是麦有问题 ,说话说着就卡一下 ,就漏听几个字 ,真折磨
(3). 面试官的反馈只有 "嗯" 加 追问 ! 本来就没开摄像头 ,有时候我说了两三分钟 ,那边沉默个 7 - 8 秒 ,弄的我不知所措
以下是面经:
(1) .怎么监控SQL语句的执行性能 ? (答 慢SQL + explain)
(2).如果没走索引怎么办 ? (答 对SQL进行排查 说了最左前缀 ,聚合函数,like,少用or ,不等于)
(3).还有吗? (答 我能记起来的就这几种 ,是我比较熟悉的)
(4).好 ,那索引有几种查询方式呢? ( 查询这两字给卡没了 ,有点无语 ,答了聚簇,二级 ,联合索引)
(5).不是 ,是索引的扫描方式有几种 ? (不会 ,没答上来)
(6). 一个字段是索引字段 ,用between and 一定会走索引吗 ?什么情况下会走 ,什么情况不会走? (答了 这个字段值不是主键的话,要回表 ,可能回表的操作造成消耗比较大 ,需要全表扫描 ,然后可能就不走索引了)
(7).然后呢 ? (沉默4 -5 秒 ,说了这一句 ,我直接emo了 ,给我点反馈啊 ,可能我答的不好 ,但是给我指点一下也行吧~ )
(8) .嗯 ,没事 ,我看你还用了redis是吧 ?(对对)
(9) .你用redis怎么用的呢 ? (讲了redis在后端怎么实现的)
(10). 看你这里还写了Kafka ?(答 : 项目中只用了Kafka 来发送通知 , 实际kafka还没有真正的学过 ) (这里给自己挖了一个坑 ,招银网络的简历是2月底投的 ,项目技术栈写了一个Kafka ,然后简历改不了 ,血泪的教训)
下面就开始emo起来了 ,这面试官铁了心要我问消息队列了
(11) .(OK 看到kafka面试官来劲了) 那用到Kafka的地方能不能用redis呢 ? (我想了redis好像也可以用作消息队列 ,就回答说可以)
(12) .那怎么做呢 ? (我第一反应是我就没有试过用redis做消息队列 ,老老实实的用Kafka 实现不香吗? ) (答 灵机一动 说可以用redis 的List 来实现可以吧 , 生产者放消息进list ,消费者取消息)
(13). 回 一个 ''嗯 '' (内心有点无语 , 我怕自己说错了 ,就说 按我的理解来可以这样的 ,但我没有这样试过)
(14).(面试官好像已经忘了我跟他说Kafka还没怎么学过) 那你Kafka 是怎么实现有序性的呢 ? (我说我还没有系统的学过Kafka ,这个是不太会的 ,一般说我还没怎么看 ,面试官也该跳过Kafka了吧)
(15).(沉默整整八秒钟) 哦 ,那Kafka 的生产者该怎么保证消息一定发送成功? (答 : 啊 ,我真不是很会 ,顺带讲了调用激活方法后就发送信息了)
(16).可能你没用过 ,但你想想Kafka是怎么保证不出现重复消费的问题呢 ? (答 : 我已经想直接离开这场面试了 ,但我还是答了好像就只会消费一次吧 )
(17) .哦 ,那怎么保证只会消费一次呢 ? (我 : ---------------)
(18). 那怎么判断消息有没有被消费呢 ? 用那个字段?怎么判断 ? (我:------------------)
(19). 那你以后肯定要遇到这样问题 ,你怎么办 ? (我真的绷不住了 ,我说我现在主要就是对Kafka不太了解 ,如果我现在遇到这个问题 ,我肯定会先找Kafka的课程学习 ,当我对Kafka的整个体系有了解 ,我也就知道了该从那个方向切入)
(20) . 其实消费多次这个问题跟Kafka没关系 (我?????) 比如说下订单 ,你怎么保证同一个人订单下的只有一次呢 ? (答 用syn和lock)
(21). 嗯 ,那你这个只能在一台虚拟机上保证 那我有多台虚拟机怎么办 ? (我:--------)
ok ,跳过了 ,问了线程池这块的 ,基本全答上来了 ,就不写了
答完了让写代码 ,我也是醉了 ,上一个面试的人代码是 二分查找
然后这面试官给我来了这样一道 : 我读题就读了几分钟
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
特殊的购买理财时间排序
在招行发放理财产品的一天中,需要记录每个客户购买理财的时间,请你将记录的时间排序。时间被以时(0<=Hours<=24), 分(0<=Minutes<=59),秒(0<=Seconds<=59)的形式记录。
但是因为每次整点整分有时候都有秒杀活动,所以排序时间的时候,有点特殊,先按秒的大小来排,秒数小的在前面;秒数相同的看分,分小的在前面,分相同的再看时,时小的在前面
你必须要把他们按秒,分,时排序为升序,最少的时间最先。
如下的样例,这购买的时间为
12:30:10
12:15:12
15:20:14
正确的排序结果应该是这样的:
12:30:10
12:15:12
15:20:14
12:30:10
12:15:10
11:20:14
正确排序结果如下:
12:15:10
12:30:10
11:20:14
示例1
输入: ["12:30:10","12:15:12","15:20:14"]
输出: ["12:30:10","12:15:12","15:20:14"]
示例2
输入: ["00:00:00","00:10:01","00:02:00","00:00:03"]
输出: ["00:00:00","00:02:00","00:10:01","00:00:03"]
在招行发放理财产品的一天中,需要记录每个客户购买理财的时间,请你将记录的时间排序。时间被以时(0<=Hours<=24), 分(0<=Minutes<=59),秒(0<=Seconds<=59)的形式记录。
但是因为每次整点整分有时候都有秒杀活动,所以排序时间的时候,有点特殊,先按秒的大小来排,秒数小的在前面;秒数相同的看分,分小的在前面,分相同的再看时,时小的在前面
你必须要把他们按秒,分,时排序为升序,最少的时间最先。
如下的样例,这购买的时间为
12:30:10
12:15:12
15:20:14
正确的排序结果应该是这样的:
12:30:10
12:15:12
15:20:14
12:30:10
12:15:10
11:20:14
正确排序结果如下:
12:15:10
12:30:10
11:20:14
示例1
输入: ["12:30:10","12:15:12","15:20:14"]
输出: ["12:30:10","12:15:12","15:20:14"]
示例2
输入: ["00:00:00","00:10:01","00:02:00","00:00:03"]
输出: ["00:00:00","00:02:00","00:10:01","00:00:03"]
----------------------------------------------------------------------------------------------------------------------------------------------------
没写对 ,看着上一个人用二分查找 , 我写这个 ,心里简直了 ,算了 ,还是自己有点菜
附:上一个人的代码和聊天!