
拼多多服务端开发二面_牛客网
答得一坨,但莫名其妙进了二面,这次是跨业务线的交叉面。上来直接手撕,第一次遇见这种情况,基础版顺利过关,但是面试官提醒了半天进阶版最后也没写完全。 基础要求:两个有序数组无重复数字,长度分别为m和n,要求求出最长公共子串长度,时间空间复杂度均小于O(MN) 你在滴滴做了两件事,第一个是透传组件,先介绍一下之前的问题是什么? 从你的描述看,之前线程池没有统一命名,日志只能看到 thread-xxx,无法定位具体容器和线程,所以要引入 trace ID,对吗?对于线程池里的异常日志,你要引入 trace ID,是吗? 之前没有 trace ID,现在希望加上 trace ID,对吗? trace ID 是什么含义?加上之后有什么好处? 加完 trace ID 后,执行流程是什么样?这是异步任务、线程池场景,线程池怎么拿到 trace ID? 能具体展开一下流程吗?比如第 65 行,你是怎么用的? 你刚才提到的注入是怎么做的?如何注入 trace ID? 这里面应该有两个地方:一个地方要注意,另一个是线程执行时要把注入的 trace ID 拿出来使用。具体怎么处理? 是每次打日志时手动拿到 name,然后填充 trace ID 吗? 你要改线程名字吗?公用线程池改线程名有什么优缺点?我理解 trace ID 应该放在日志上下文/MDC 里,打日志时直接拿当前 trace ID。 这个任务跟着上一个请求来,某个请求是带 trace ID 的,你其实想让这个线程里打印的所有日志都带上该请求的 trace ID,对吧?除此之外还有别的需求吗? 那我为什么不把平台日志直接对应到 trace ID,而是去改线程名?改线程名有什么缺点?如果线程名频繁变更,会有什么问题吗? 我贴的这段代码,在 79 行:定义一个 global counter,定义 incr 函数,起 100 个线程并发调用,每个线程执行 100 万次,我在其中某个线程直接打印结果,这个结果是多少? 这里的冲突怎么理解?什么叫冲突?为什么 counter++ 只有一行代码,并发之间还会有冲突?

