面试总结

2020-01-18  本文已影响0人  genglintong

背景

去年十一月份的某一天,之前实习的时候隔壁组的一个老大跟我聊到近况,有没有想要尝试一些其他的机会。他现在在某大厂,比较缺人,说实习的时候觉得我比较靠谱
自己的一些规划也是在今年春季尝试着找一找其他的机会,因此就答应下来,决定尝试一下。

面试准备

面试流程

面试的公司在业界是出了名的流程慢,从开始内推到现在(收到口头offer)已经一个半月了。

面试详情

技术一面
# 日志格式 
# 域名 api ip 耗时
# www.test.com  /hello 127.0.0.1 50
cat access.log | grep '/hello' | awk '{totalTimes=totalTimes+$4} END{print totalTimes/NR}'

当时没有写出来,写了80%左右,主要是对于END START 使用忘记了,说自己平时常用计算频率啥的。
面试官:那计算频率比这个还要复杂啊,那就写一下吧。

# 访问时间 域名 api ip 耗时
# 2019.12.01.12:00:00 www.test.com  /hello 127.0.0.1 50

# 计算 hello qps
cat access.log | grep '/hello' | awk '{print $1}' | uniq -c | sort -rn | head
技术二面
技术三面
public synchronized long nextId() {
        long timestamp = this.timeGen();
        if (timestamp < this.lastTimestamp) {
            throw new RuntimeException(String.format("Clock moved backwards.  Refusing to generate id for %d milliseconds", this.lastTimestamp - timestamp));
        } else {
            if (this.lastTimestamp == timestamp) {
                this.sequence = this.sequence + 1L & 4095L;
                if (this.sequence == 0L) {
                    timestamp = this.tilNextMillis(this.lastTimestamp);
                }
            } else {
                this.sequence = 0L;
            }

            this.lastTimestamp = timestamp;
            return timestamp - 1514736000000L << 22 | this.dataCenterId << 17 | this.workerId << 12 | this.sequence;
        }
    }

面试官: 如果有某些帖子特别热,一个帖子有千万子贴,如何设计缓存?
我:使用缓存,分页,offset扫表问题 - 可以带上贴id
面试官:为什么不使用 redis?
我: redis 使用zset, 保存顺序,获取贴id展示 但是数据量很大的时候,会对redis有性能影响。
面试官:这是之前贴吧的实现方案。那大key会对redis有什么影响呢?
我:影响读的性能,redis单线程
面试官: 我们不会全量读,读一部分不会有问题
我:会影响redis持久化,持久化时会生成子进程
面试官: 嗯,这是一个点,还有吗?
我:我忘记说啥了,就这个问题又聊了一会~

(忘记具体场景了,比如查询某个帖子下 男性用户回帖的30条记录)
面试官:那比如还是这个问题,一个sql执行起来就是很慢,如何解决。
我:使用explain 看执行计划,看是否使用正确索引。
面试官:用到了索引,但是还是很慢,执行计划,扫描了几十万条记录。查看表里记录,发现这几十万都是女性用户,查询时全扫到了。
我:(当时很懵,感觉掉进坑里了) 画了B+树结构,也不能对性别建索引啊,说了一个不太行的建议,倒序查找。
面试官:倒序也有可能后几十万条也都是女性。
我:... 想不太出来了
面试官:使用复合索引啊
我:哦哦哦,对(...)
面试官:看来你对mysql不太熟悉啊
我:业务场景用的比较少,还是纸上谈兵。redis用的比较多。

总监面(四面) 副总监面(五面) GM面(六面)
HR面
上一篇 下一篇

猜你喜欢

热点阅读