【面经】5月15日 携程/旅游事业群/一面/1h
自我介绍
项目介绍:
难点是什么?
线程池的参数是怎么设置的?核心线程数、最大线程数?
项目里,服务之间通信的安全性是怎么设计的?(请求拦截实现权限管理。本来还想说 token 的,面试官一直追问就没说)
权限管理是如何实现的?
如果让你来设计实现一个权限管理系统,你觉得需要怎么设计?思路是什么?用什么技术实现?
广告曝光逻辑是什么?(我们是随机实现。但是更正规的做法就是,每个广告有一个权重,然后随系统不断运行,权重动态变化,并实时更新。这里可能会用到 redis 的 zset)
虚广告是什么?
你作为项目的负责人,你是如何去管理团队的?(完全没准备,从需求过程中的团队沟通、职责分工两个方面去说的。)
Java:
并发编程需要考虑的点有哪些?(自己发散,线程安全的问题,可见性、原子性、有序性)
可见性产生的原因了解过吗?
多个 CPU 之间是如何保证数据一致性的?(MESI 协议)
MESI 的几个状态了解吗?
happens-before 有了解吗?
MySQL:
Buffer Pool 有了解吗?(这块我大概知道是缓存,但是太久没看这个了,被问懵了。。。)
如果让你实现这样一个缓存 SQL 的功能,你会怎么样去设计?这里需要考虑的点大概会有这些,比如缓存达到上限时数据如何淘汰、数据什么时候刷盘?(他一下问了好几个问题,我就只记得淘汰机制,所以重点说的这个。用 LRU)
Buffer Pool 在从磁盘读取数据到缓存中的时候,线性预读和随机预读机制会让它不止读取一个数据,也就是会读到没有查询的数据。这个时候应该怎么让数据进入缓存,又让哪些数据进行淘汰呢?(说了优先队列,然后面试官顺着我的说了,其实可以给定一些指标,比如每个数据的缓存命中率、数据的存放时间、冷热数据缓存等。冷热数据缓存就是说新进来的数据先进这个冷缓存,然后当它用的次数比较多了再进热缓存)
MySQL 会涉及到哪些性能优化手段?(我自己是知道哪些的,比如索引优化、慢 SQL 优化、分库分表这些,但是说的时候就很乱,看来还是得多练习。。。)
你先说说索引吧?(讲了建立索引的原则,也讲到了联合索引)
如果有 3 个 SQL,where age = xxx、where name = xxx、where age = xxx and name = xxx。你觉得要怎么建立索引,才能达到优化目的?
你再说说慢 SQL 呢?(从定位慢 SQL 入手,slow_query_log 文件、debug 接口时间等。查询的时候,只查需要的字段,避免回表查询等)
有了解过执行计划吗?就是 explain。(我却是忘记了 explain 就是执行计划。。。还懵了一下)
你说一下 explain 呢?(说了 possible_keys、key、type、extra 这几个字段的含义)
extra 里面有一个 using index_condition,它是索引下推的意思。这个有了解过吗?
反问:
部门是什么?(旅游事业群)
总结:
这个面试官问的问题都比较泛,基本上是靠你自己去发散,能想到什么就说什么的这种感觉。包括也会出一些设计题这种。今天问到了很多不太熟的,所以我整个面试过程中说话比较紧张、也很不自信,经常有大概、可能这些不确定的词语出现。不过也好,也算涨经验了。
#携程##实习##面经#