中原富国科技网

六战六捷之我的面试心得

中原富国科技网 1

自我介绍

一般面试官都会让你自我介绍,招募“聊天员”的网帖层出不穷,我觉得自我介绍主要是有两个作用

第一个是给面试官留出时间来看你的简历,诱惑着希望“赚快钱”的网友。“聊天员”是一种什么样的“职业”?2021年7月,他好想一下问你什么问题比较好

第二个就是面试官想听一下你的表达是否存在问题

一般而言建议自我介绍最好提前写好,澎湃新闻以应聘“聊天员”的方式调查发现,先过几遍,市面上有不少所谓交友软件招募女性聊天员。有技术公司称,让脑袋里面有一个概。时间就控制在三分钟左右就好了,近一年内这种“语聊陪玩”的软件很火,太长背不了,他们每个月的量都在七八十套左右。打着交友的旗号,太短面试官简历没看完。

附上我常用的自我介绍给家参考

你好,这些软件背后却寻找“聊托儿”,我叫张三,做诱骗感情的生意。从打造女聊天员“优质形象”,先后呆过X家公司,到培训初次搭讪、深入聊天的技巧和话术,已经有X年的Java经验,形成了一套完整的培训体系和分成机制。其中,第一家公司是XXXXX,主要是做XXXX,我主要负责XXXX。第二家公司是做什么什么的,我主要负责什么,在最近做的一个项目里面,取得了某某成果.....

当然上面的内容肯定不够三分钟,所以请家根据自己的实际情况进行适当扩充

八股文

这些问题呢,一般都是有迹可循,网上分享的面经也是堆,我主要是想和家分享一些我印象比较深刻的八股文的题的思路。

讲讲ThreadLocal

我一听这个开场感觉就很稳,之前有写过ThreadLocal相关的内容。我直接一把梭,面试官无言。

首先讲下ThreadLocal底层数据结构,然后延伸到用法,由于子线程无法获取到父线程ThreadLocal的值,所以延伸到了 InheritableThreadLocal。

又因为在使用线程池的时候InheritableThreadLocal并不能解决获取父线程值的问题,因为线程池中的线程是复用的,可能在子线程中对值进行了修改,使子线程获取到的值并不正确。我又给引申到了 alibaba TransmittableThreadLocal,再顺便讲下它的原理。

最后讲下ThreadLocal可能会出现内存泄漏需要注意,又把怎么排查内存泄漏的方法讲了下。

讲完这些,面试官一般都不会再继续问了,因为我把他想说的都说了。

之前关于ThreadLocal的文章,可以看这里

如果让你设计一个线程池,你怎么设计?

这其实就是说线程池的,只需要把线程池的核心原理讲下就行了。

先说线程池主要是通过ThreadPoolExecutor来创建的,再说下几个参数的作用,网上分析线程池的文章堆,面试的时候可不是写文章,一定要在有限时间说重点。

比如重点说下原理,主要是几个参数的作用,阻塞队列一定要用有界队列,拒绝策略有几个,默认的行为是什么,再讲讲特殊的策略CallerRunsPolicy(如果线程池未关闭,则交给调用线程池的线程执行)

最后还可以引申讲下Tomcat的线程池优先扩容到最线程数,来不及处理的多余任务才会放入到队列中。

最后收个题,如果你设计,线程池的参数允许动态调整,线程池是提供了参数进行设置的。

关联文章

讲讲redis分布式锁

就要讲下setNX这个命令,然后说下有什么问题(比如业务未执行完成锁就释放了,或者释放锁的不是同一个线程等等问题),然后引申到redLock,再引申到redission实现的分布式锁,重点讲下说下setnx+lua以及watchDog

然后还可以引申到 zookeeper实现分布式锁,说下有序节点,临时节点,事件等,一般是使用开源客户端curator的实现。

最后再比较下两者区别,比如

redis获取不到锁会一直不断尝试获取,比较消耗性能

redis数据并不是强一致性,极端情况下可能会出现问题,redlock也无法完全保证

zk设计定位就是强一致性,锁模型健壮,适合做分布式锁

zk获取不到锁,只需要添加就行了,不用一直轮训

zk也有缺点,就是较多客户端频繁申请加锁,释放锁,对于zk集群的压力会比较。

time_wait过多怎么办?

从四次挥手到怎么产生time_wait,再到多了会怎样?怎么解决。这就是一个顺序链条。

TCP连接处在 TIME_WAIT 状态,这个是TCP协议规定的,四次挥手时主动关闭方所处的一个状态,会等待2个MSL(MSL=2分钟),所以在这个时间段内不会释放端口,如果并发量的话,会导致端口不够用,从而影响新的TCP连接。

我们可以通过设置对应的系统参数(reuse_buckts,好像叫这个,参数为什么不写全?我写了也记不住,干脆只需要知道有参数可以控制就行了),重用这些连接。

tomcat调优怎么做?

可以从I/O模型,JVM内存,线程池以及网络优化四个方面答。

如果tomcat跑到windows上可以考虑使用NIO2,因为从操作系统层面实现了真正的异步IO,如果是在Linux服务器上,就还是建议使用NIO,因为JVM是在应用层面通过epoll实现的异步IO。

JVM内存就涉及到jvm内存模型(不是JMM),然后针对年轻代,老年代,metaspace等分别进行说明,以及一些配置的参数,垃圾回收器等。

网络优化的话可以从tcp的半连接队列和accept队列说起。

半连接队列:保存 SYN_RECV 状态的连接。

队列长度由设置

accept 队列:保存 ESTABLISHED 状态的连接。

你可以想象在高并发情况下当 Tomcat 来不及处理新的连接时,这些连接都被堆积在 accept 队列中,而acceptCount参数可以控制 accept 队列的长度,超过这个长度时,内核会向客户端发送RST,这样客户端会触发“Connection reset”异常

所以配置tomcat的时候我们需要考虑这两个参数的值

kafka exactly once如何保证?

at least once + 幂等 = exactly once,kafka可以保证at least once

Producer 的幂等性指的是当发送同一条消息时,数据在 Server 端只会被持久化一次,数据不丟不重,不过这里是有条件

只能保证 Producer 在单个会话内不丟不重

幂等性不能跨多个 Topic-Partition,只能保证单个 partition 内的幂等性,当涉及多个 Topic-Partition 时,这中间的状态并没有同步。配置 enable.idempotence 设置为 true

Producer 幂等性的实现原理,Kafka Producer 在实现时有以下两个重要机制:

PID(Producer ID),用来标识每个 producer client

sequence numbers,client 发送的每条消息都会带相应的 sequence number,Server 端就是根据这个值来判断数据是否重复

同时producer 在设置幂等性时,

要求 MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION 小于等于 5, 因为 server 端只会缓存最近 5 个 batch。

如果想要保证多个partition,则需要事务

mysql索引优化要注意哪些点?

先从mysql B+树结构(页)说起,然后讲讲注意点。比如

不要超过三张表join

join的时候小表驱动表

尽量走主键索引,避免回表

为区分度的列建立索引

最左匹配原则,like 'xx%'

查询需要的列,而不是所有列,不要使用计算,函数等

explain..............

Synchronized和ReentrantLock有什么不一样

先说原理,再比较异同点。

Synchronized从偏向锁 ---> 轻量级锁 ---> 重量级锁 ---> CLH队列 ---> pthread

ReentrantLock ---> 用法 ---> 原理(AQS) ---> UnSafe.park ---> pthread

还可以引申下AQS下的其他并发工具类

感兴趣的可以去看下我写的并发编程系列。

SpringBean如何解决循环依赖?

我知道你要说三级缓存,说之前最好看下源码形成自己的思想,光背是背不住的。

然后面试官会问你只要两级行不行?如果你说不行,那面试到这里就结束了。

如果你说行,就好好想想问什么需要三级呢?(代理)

项目

qps,rps多少?

线上遇到过让你觉得最有难度的问题?

如果你负责的项目流量陡增10倍怎么办?

你这个项目的亮点在哪里?

文字越少,问题越。

说实话这些性问题问得比重是远比八股文的,因为八股文网上堆,但是这些项目上相关的,每个人都是独一无二的。所以平常的时候要多思考这类问题,多总结。

以上就是常常被问最有代表性的问题,希望对家有帮助。

回答不上来怎么办?

你觉得躺平怎么样?

有些问题回答不上来很正常,家理解可能不一样,而且就算回答上来了,说不定也不是面试官想要的。

遇到不清楚意思的,多问问。实在不会的就回答不会好了,或者跟面试官讲讲你的思路也行,把这场面试当成一场技术交流,心态会好很多。

面试之前最好把一些常问的,做到心中有数

要自信呀

只要够自信,面试就成功了50%。

最后,看到这儿了,我的自信值得你点个赞吗?(手动狗头)

苹果xr怎么保养手机

华为手机怎么划到后台

小米怎么不让手机下载东西

你属龙我属马的梗怎么说

什么是做梦的感觉

给炒酸奶口味起名字叫什么

张统良字画价值多少钱一平尺

微信视频号发布接口在哪里

汉阳seo网站优化费用

标签:面试 面试官 线程 线程池