腾讯音乐
快来分享你的内容吧~
txyy二面面经
#面经 1.那个go语言有学习过吗? 2.对未来的一些规划是怎么,有什么样的考虑? 3.算法题:atio 4.怎么建立一个好的索引? 5.如果我有一个查询是 selecet abc order by a b c group by bca 在这种情况下要创造索引吗 6.怎么建会好一点? 7.那我这 group 能用到这个索引吗? 8.那order by abc 能用到索引吗? 9.没办法同时满足吗? 10.表有三个字段 a、b、c,其中 a 是主键,c 是普通索引,查询语句是 select * from t where c > 0,哪种查询会比较快? 11.走 c 的这个查询一定会比较快,是吧? 12.比如说我就一行数据,你觉得哪个快呢? 13.执行这个 sql 的时候,数据库它本身就会给你做决策,怎么去做决策呢? 14.全量扫描时,多少数据量算少呢? 15.如果这个 c 是性别。用int存储,你觉得他走 a 快还是走 c 快? 16.觉得数据库怎么去做这个决策? 17.是不是在执行这个 sql 之前,数据库会先扫一遍这个 c 列? 18.简单讲一下3次握手吧。 19.这个 seq 是怎么定的? 20.那为什么是 x 加1?为什么不是加2呢?加1表示什么? 21.有了解过 ddos 攻击吗?你讲一下它是什么样的一个原理? 22.那我一个服务器可能也有很大的流量。这个场景下面,主要攻击点在哪里? 23.有什么办法去拒绝他吗?怎么去识别这个ddos的攻击? 24.你觉得ddos攻击耗的什么资源? 25.介绍一个项目吧。 26.这里的题目是预先生成,还是实时生成? 27.很多人提交时AI出题效率如何?多少个人并发的去答题呢? 28.两个线程池是什么意思啊? 29.那会员是专享一个线程池,是吧? 会员都在一个线程池,那会不会会员的人数反而比较多呢? 30.最大并发的时候,那你那你这里每一次跟 ai 就是说每个线程跟 ai 去交互,这里的延迟大概是多少? 31.你们是跟他建立了一个什么样的连接,然后去实现这个流式的一个传输? 32.你觉得这个项目里面的难点是什么? 33.如何对智普api的数据流进行处理? 34.题目最终由对方生成,拼接题目的难点在哪里? 35.通过AI生成题目时,若题目有敏感内容该如何处理? 36.数字人生成、语音合成你有做过吗?它是怎么实现动起来的?是指它本身有一个形象一直在那播放,还是有个形象然后有其他情况? 37.讲一下你用过 redis 的哪些数据结构可以吗? 38.那有用过一些其他的一些高级的数据结构吗?比如说? 39.你对 redis 的这个事务有了解吗? 40.他有没有保证像 mysql 的事务属性一样的能力?跟 mysql 的事务有什么区别呢? 41.刚讲到一个就是说,原子性,就是说我现在有10条命令,那 mysql 它本身这个事务就是,就是 acid 就是它能够把这10条命令要不都成功,要不都失败。那 redis 如果说这10条命令执行的过程中,有一条命令发生了失败,你刚说它也保证了原子性,是吧? 42.在执行过程中,其他事务的 SQL 能插进去吗? 43.EXEC 的时候,EXEC 执行的时候会被其他命令所打断吗? 44.那你有了解过 lua 脚本吗?那你觉得这两者有什么区别? 45.多次通信是指什么?执行EXEC 时,这些命令发给服务器了没有?如果没有的话,这里为什么会有多次网络交互? 46.常用的 linux 命令吗?你平时用的是什么样的一个 linux 系统? 47.性能分析,有没有用过一些相关的一些工具? 48.appid 相当于给每一个,它是一个什么样的表? 49.题目表中的题目大概有多少? 50.如何定位一个 app id? 是每个用户注册就会有一个 app id,还是每个企业、每个老师有一个,还是针对每个应用,例如用户创建的心理测评应用这样来定位? 51.这里有考虑分库分表吗?这里如果数据一直涨怎么办? 52.测试的时候的上百万数据,还是说真实情况的上百万数据? 53.你后来做了哪些优化? 54.你想问什么?问了业务流程
txyy后台一面夺命五十问
#面经 夺命五十问,恐怖如斯 先是自我介绍,然后八股、算法题,最后项目和闲聊 1.你了解的排序算法有哪些? 2.排序是怎么样去做的,例如基数排序 3.排序算法的时间复杂度分别是多少 4.什么情况下是最坏的情况 5.快排的一个排序过程 6.B树和b+树(忘了,尬住) 7.那什么是红黑树 8.红黑树插入的时间复杂度是多少 9.插入过程是怎样的? 10.java 里面的哈希 map 跟 tree map 它有什么区别? 11.哈希map和tree map查找的时间复杂度分别是多少? 12.那他们的查找的时间复杂度分别是多少? 13.那什么情况下使用 hashmap 好一点?什么时候使用 tree map 好一点? 14.哈希 map 它如果哈希冲突的时候怎么解决? 15.哈希冲突除了链地址法之外,还有其他的什么方法? 16.hashmap 因为它底层是一个数组嘛,数组的空间如果存满了之后会怎么处理? 17.它在扩容的时候就立即迁移吗? 18.java 里面的 final 这个关键字,它起一个什么样的作用? 19.普通类跟抽象类有哪些区别呢? 20.接口和抽象类有什么区别呢? 21.tcp 和 udp 有什么区别? 22.请描述一下刚提到的三次握手的过程 23.有一个 time wait 状态会在什么情况下产生? 24.那如果没有这个状态会出现什么情况? 25.最后一个 ack 包,它可能会在传输中丢失嘛。 26.通讯过程中端口起到一个什么样的作用? 27.什么是 tcp 的粘包?那怎么解决这个问题? 28.那 http 它是怎么怎么处理粘包的呢? 29.如何排查客户端连不上服务端的问题? 30.还有其他的一些工具协助你们排查吗? 31.进程和线程有什么区别? 32.进程间如何通信? 33.它是怎么样实现,就是两个进程它可以访问同一块地址的? 34.Cpu在运行过程中访问变量,是否要知道它的内存地址才能访问到? 35.cpu 是怎么知道它的内存地址的? 36.什么是死锁?那怎么解决这个问题啊? 37.什么是乐观锁?什么是悲观锁? 38.算法题:给定一个数组,该数组特点是升序数组的循环移位,例如6, 7, 8, 9, 10, 4, 5,写代码实现在该数组中的查找功能,其时间复杂度低于O(n),空间复杂度不能超过O(n) **项目:** 39.你做过的项目,你觉得做的比较好的。 40.你这里面使用了雪花算法,你是用来做什么的? 41.那雪花算法它是怎么样一个算法? 42.那4段组成,它怎样保证唯一呢? 43.有没有可能在同一台机器上生成唯一的呢?不唯一呢? 44.那如果一毫秒内有多个请求,会不会有问题? 45.你底层 db 是什么?底层的数据库用的是什么数据库? 46.redis 是用来做什么的? 47.redis 它是怎么样做持久化的? 48.做主从同步的话,那主从同步之间它有哪些模式啊? 49.你有什么问题问我没有? 50.怎么还没offer? 面试官人很好,最后再问我为什么还没offer 更新:晚上通知第二天复试了,加油
#技术# 经验 职场 #嘉宾分享# 《一道腾讯音乐面试题,来看如何回答监控检测问题》 最近有个学弟来问我,说前两天,参加腾讯音乐面试的时候,二面问到了这么一个问题: 在一个Linux服务器集群上,如果服务端A线程池中处理过程中出现了异常,但是这个时候节点CPU和内存都没有影响,那么,如何去检测他的线程运行情况,以反馈回去给RPC中枢节点通知服务端A的状况? 另外,除了服务端A中CPU和内存(硬件指标),还可以监控那些指标,特别是软件指标? 这个问题其实比较典型了,背后考察的是在 Linux 服务器如何做线程运行检测,硬件指标,软件指标的监控熟悉度 那么,我们可以分几个点来回答 首先,第一个,线程/线程池运行情况,一般做法是通过在程序中打监控埋点日志上报,或者专门的 SDK 来定时检测报警 那么第二个,检测的指标有哪些,这里也根据经验列出一些常见的 1. 线程池状态:监控线程池的当前状态,如线程池大小、活动线程数、任务队列大小等。这可以帮助识别线程池是否已满或是否存在线程饥饿等问题。 2. 线程池任务队列状态:监控线程池任务队列的状态,如任务队列长度、任务等待时间等;有助于识别任务队列是否拥堵或是否存在长时间等待的任务。 3. 异常计数器:记录线程池中发生的异常数量和类型。这可以帮助我们识别线程池中频繁发生的异常,以便及时进行故障排查和修复。 4. 请求吞吐量:监控单位时间内处理的请求数量,从而评估系统的性能和负载情况。 5. 请求响应时间:监控每个请求的平均响应时间、最长响应时间和百分位响应时间等指标,来识别系统的性能瓶颈和慢请求。 6. 错误率:监控请求处理过程中的错误率,如请求失败的比例,来识别系统中的错误和故障。 7. 系统日志:监控系统日志中的异常信息、错误消息和警告信息等,了解系统的运行状况,并及时发现潜在的问题。 8. 服务可用性:监控服务的可用性和健康状况,如服务的响应时间、成功率和错误率等。来评估服务的可靠性和稳定性。 通过监控这些软件指标,可以更全面地了解服务端 A 节点运行情况,可以看得出,上面的路径,其实不仅包括单节点的检测,也把系统全局的问题都检测到了。 在系统的稳定性建设这块,可以更好的把握,并及时发现和解决潜在的问题。同时还可以将这些指标发送给 RPC 中枢节点,以便进行集中监控和管理 那么除了监控线程池状态和任务队列状态,还可以使用以下方法来检测线程运行情况: 1. 线程转储(Thread Dump):线程转储是一种获取线程状态信息的方法。通过生成线程转储文件,可以查看线程的堆栈跟踪信息,包括线程的状态、执行的方法和锁的持有情况等。这可以帮助识别死锁、线程阻塞和线程竞争等问题。 2. CPU 采样(CPU Profiling):使用 CPU 采样工具,如 Java 中的 VisualVM 或 YourKit Profiler 等,可以对线程的 CPU 使用情况进行采样和分析。来识别线程的 CPU 消耗情况,找到耗时较长的方法和代码块。 3. 内存分析(Memory Analysis):使用内存分析工具,如 Java 中的 VisualVM 或 MAT(Memory Analyzer Tool)等,可以分析线程的内存使用情况,内存泄漏、对象的创建和销毁情况等。 4. 监控系统指标:除了线程相关的指标外,还可以监控系统级别的指标,如 CPU 利用率、内存使用情况、磁盘 I/O 等。评估系统的整体负载和性能,从而更好地分析线程运行情况对系统的影响。 5. 日志分析:通过分析系统日志、应用程序日志和异常日志等,可以了解线程在运行过程中是否出现了错误、异常和警告信息,跟踪线程运行过程中的问题和异常情况。 6. 分布式跟踪(Distributed Tracing):对于分布式系统,可以使用分布式跟踪工具,如 Zipkin、Jaeger 等,来跟踪请求在系统中的完整调用链,包括线程的执行情况,来分析请求在各个服务和组件中的处理时间和线程状态。 总之,通过一道简单的面试题,我们把常见的考察点做了梳理,对后面如果遇到相似的,也可以快速调动记忆,根据实际情况,举一反三的回答。٩(๑^o^๑)۶
