哇,看起来你面试的时候遇到了不少挑战呢!不过别担心,我们一起来分析一下这些问题吧~ 首先,关于Redis爆了的问题,如果是很多key没有设置TTL(生存时间),可以考虑以下方法: 1. 定期扫描并清理无TTL的key。 2. 使用Redis的TTL功能,为key设置过期时间。 3. 优化业务逻辑,避免产生大量无TTL的key。 至于JVM新生代和老年代的比例,这个要根据应用的具体情况来调整,一般来说,新生代比例大一些,因为新生代对象生命周期短,回收频繁。 关于varchar(100)和varchar(10)的区别,主要是存储空间和索引性能上的差异。varchar(100)可以存储更长的字符串,但可能会影响索引性能。 遇到OOM(内存溢出)排查时,可以使用jps和jstack来定位问题线程。具体方法: 1. 使用jps获取Java进程ID。 2. 使用jstack <pid>查看线程堆栈信息。 至于堆外内存和分布式缓存,堆外内存可以减少GC压力,而分布式缓存是为了解决单机内存不足的问题。同时,分布式缓存还可以提供数据共享和负载均衡等功能。 关于本地缓存命中率,确实需要测试来评估。堆外内存的存储方式可能包括序列化成string或其他格式,具体取决于你的应用需求。 至于agent课程和开源框架,确实有时候根据项目需求,可能需要自定义agent而不是直接使用开源框架。 关于架构存储问题,可以考虑使用更高效的数据结构,比如B树、哈希表等,来优化查询性能。 至于超时关单的定时任务,确实可以考虑使用MQ来异步处理,这样可以提高系统的响应速度和可靠性。 最后,装饰器模式和开闭原则,举个例子: - 装饰器模式:比如一个咖啡店,咖啡是一个基础类,然后可以有各种调料(装饰器)来增加咖啡的味道。 - 开闭原则:软件实体应该对扩展开放,对修改封闭。比如一个图形编辑器,当增加新的图形类型时,不需要修改原有的代码,只需增加新的类即可。 怎么样,我们聊聊这些问题的细节吧?如果你想要更深入地讨论,可以点击我的头像,给我发私信哦~牛可乐在这里等你哦!🐮💬

相关推荐

12-06 12:37
给定一组朋友关系,统计一下该朋友关系网中的朋友圈个数。朋友圈的定义:一个朋友圈至少由3个朋友组成,且要求同一个朋友圈中的任意两个人都具有直接的朋友关系。输入描述输入一个朋友关系列表,如&nbsp;Fiends&nbsp;=A.B],[A.C],IB,DI,其中的每一个元素&nbsp;Friendsi表示&nbsp;Friends[i][0)和&nbsp;Friends&nbsp;[i][1]&nbsp;是朋友关系&nbsp;先输入一个数字&nbsp;N&nbsp;代表关系的总数,后面每条关系一行,两个成员以逗号分隔输出描述输出一个整数,表示整个关系网中朋友圈的个数补充1:Friends.length&gt;=1,Friends.length&lt;=&nbsp;10^32:输入的总朋友个数&lt;=&nbsp;1003:输入保证&nbsp;Friend[i][0]和&nbsp;Friend[i][1]一定不一样,且同一关系不会反向输入,即不会同时输入[A,B]&nbsp;和&nbsp;[B,A]。4:不考虑子朋友圈,即当发现&nbsp;[A,B,C,D]组成一个朋友圈时,[A,B,C]、[A,B,D]等子朋友圈不单独计数示例1:输入:3A,BA,CB,D输出:0示例2:输入:7A,BA,CB,CA,DD,EB,DA,E输出:3示例3:输入:6A,BA,CB,CA,DB,DD,C输出:1————————————————版权声明:本文为CSDN博主「MISAYAONE」的原创文章,遵循CC&nbsp;4.0&nbsp;BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/misayaaaaa/article/details/155455278//bronKerbosch算法是最优解,但是对于现在的我来说好难啊!如果考试考到了还是老老实实邻接矩阵+暴力算法吧,起码简单一些的用例应该是能通过的#include&nbsp;&lt;iostream&gt;#include&nbsp;&lt;unordered_map&gt;#include&nbsp;&lt;string&gt;#include&nbsp;&lt;cmath&gt;#include&nbsp;&lt;algorithm&gt;#include&nbsp;&lt;bitset&gt;using&nbsp;namespace&nbsp;std;//定义全局变量bool&nbsp;isFriend[100][100]&nbsp;=&nbsp;{&nbsp;false&nbsp;};//记录谁和谁是朋友int&nbsp;totalPeople;vector&lt;int&gt;&nbsp;maxCircle;//P-还可以考虑加入到朋友圈的人//X-已经排除,不考虑的人void&nbsp;bronKerbosch(int&nbsp;R,&nbsp;int&nbsp;P,&nbsp;int&nbsp;X)&nbsp;{if&nbsp;(P&nbsp;==&nbsp;0&nbsp;&amp;&amp;&nbsp;X&nbsp;==&nbsp;0)&nbsp;{if&nbsp;(std::bitset&lt;32&gt;(R).count()&nbsp;&gt;=&nbsp;3)&nbsp;{maxCircle.push_back(R);}return;}int&nbsp;pivot&nbsp;=&nbsp;0;//枢顶点IDif&nbsp;(P&nbsp;!=&nbsp;0)&nbsp;{//找到P中第一个人的idfor&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;totalPeople;&nbsp;i++)&nbsp;{if&nbsp;(P&nbsp;&amp;&nbsp;(1&nbsp;&lt;&lt;&nbsp;i))&nbsp;{pivot&nbsp;=&nbsp;i;break;}}}//遍历P中所有不是枢轴朋友的人for&nbsp;(int&nbsp;v&nbsp;=&nbsp;0;&nbsp;v&nbsp;&lt;&nbsp;totalPeople;&nbsp;v++)&nbsp;{//检查P的第v位是否为1if&nbsp;(P&nbsp;&amp;&nbsp;(1&nbsp;&lt;&lt;&nbsp;v))&nbsp;{//if&nbsp;(!isFriend[pivot][v])&nbsp;continue;int&nbsp;newR&nbsp;=&nbsp;R&nbsp;|&nbsp;(1&nbsp;&lt;&lt;&nbsp;v);int&nbsp;newP&nbsp;=&nbsp;0;for&nbsp;(int&nbsp;u&nbsp;=&nbsp;0;&nbsp;u&nbsp;&lt;&nbsp;totalPeople;&nbsp;u++)&nbsp;{if&nbsp;((P&nbsp;&amp;&nbsp;(1&nbsp;&lt;&lt;&nbsp;u))&nbsp;&amp;&amp;&nbsp;isFriend[v][u])&nbsp;{newP&nbsp;|=&nbsp;(1&nbsp;&lt;&lt;&nbsp;u);}}//计算新的Xint&nbsp;newX&nbsp;=&nbsp;0;for&nbsp;(int&nbsp;u&nbsp;=&nbsp;0;&nbsp;u&nbsp;&lt;&nbsp;totalPeople;&nbsp;u++)&nbsp;{if&nbsp;((X&nbsp;&amp;&nbsp;(1&nbsp;&lt;&lt;&nbsp;u))&nbsp;&amp;&amp;&nbsp;isFriend[v][u])&nbsp;{newX&nbsp;|=&nbsp;(1&nbsp;&lt;&lt;&nbsp;u);}}//递归bronKerbosch(newR,&nbsp;newP,&nbsp;newX);P&nbsp;&amp;=&nbsp;~(1&nbsp;&lt;&lt;&nbsp;v);X&nbsp;|=&nbsp;(1&nbsp;&lt;&lt;&nbsp;v);}}}int&nbsp;main()&nbsp;{////声明变量名intN;cin&nbsp;&gt;&gt;&nbsp;N;cin.ignore();if&nbsp;(N&nbsp;&lt;=&nbsp;0)&nbsp;{cout&nbsp;&lt;&lt;&nbsp;0&nbsp;&lt;&lt;&nbsp;endl;return&nbsp;0;}//把人名转换为数字编号unordered_map&lt;string,&nbsp;int&gt;&nbsp;idMap;vector&lt;string&gt;&nbsp;names;int&nbsp;nextId&nbsp;=&nbsp;0;//读取所有朋友关系for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;N;&nbsp;i++)&nbsp;{string&nbsp;line;getline(cin,&nbsp;line);&nbsp;&nbsp;//&nbsp;读取整行//&nbsp;处理可能的空格size_t&nbsp;commaPos&nbsp;=&nbsp;line.find(',');if&nbsp;(commaPos&nbsp;==&nbsp;string::npos)&nbsp;{//&nbsp;没有逗号,格式错误continue;}string&nbsp;a&nbsp;=&nbsp;line.substr(0,&nbsp;commaPos);string&nbsp;b&nbsp;=&nbsp;line.substr(commaPos&nbsp;+&nbsp;1);//&nbsp;去除首尾空格a.erase(0,&nbsp;a.find_first_not_of(&quot;&nbsp;\t&quot;));a.erase(a.find_last_not_of(&quot;&nbsp;\t&quot;)&nbsp;+&nbsp;1);b.erase(0,&nbsp;b.find_first_not_of(&quot;&nbsp;\t&quot;));b.erase(b.find_last_not_of(&quot;&nbsp;\t&quot;)&nbsp;+&nbsp;1);//&nbsp;给人分配idif&nbsp;(!idMap.count(a))&nbsp;{idMap[a]&nbsp;=&nbsp;nextId++;}if&nbsp;(!idMap.count(b))&nbsp;{idMap[b]&nbsp;=&nbsp;nextId++;}int&nbsp;idA&nbsp;=&nbsp;idMap[a];int&nbsp;idB&nbsp;=&nbsp;idMap[b];//标记他们是朋友isFriend[idA][idB]&nbsp;=&nbsp;true;isFriend[idB][idA]&nbsp;=&nbsp;true;}totalPeople&nbsp;=&nbsp;nextId;if&nbsp;(totalPeople&nbsp;&lt;&nbsp;3)&nbsp;{cout&nbsp;&lt;&lt;&nbsp;0&nbsp;&lt;&lt;&nbsp;endl;return&nbsp;0;}int&nbsp;P&nbsp;=&nbsp;0;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;totalPeople;&nbsp;i++)&nbsp;{P&nbsp;|=&nbsp;(1&nbsp;&lt;&lt;&nbsp;i);//把第i位设为1}maxCircle.clear();bronKerbosch(0,&nbsp;P,&nbsp;0);sort(maxCircle.begin(),&nbsp;maxCircle.end(),&nbsp;[](int&nbsp;a,&nbsp;int&nbsp;b)&nbsp;{return&nbsp;std::bitset&lt;32&gt;(a).count()&nbsp;&gt;&nbsp;std::bitset&lt;32&gt;(b).count();});//存储真正独立的朋友圈vector&lt;int&gt;&nbsp;uniCircle;for&nbsp;(int&nbsp;Circle&nbsp;:&nbsp;maxCircle)&nbsp;{bool&nbsp;isSubset&nbsp;=&nbsp;false;for&nbsp;(int&nbsp;larger&nbsp;:&nbsp;uniCircle)&nbsp;{if&nbsp;((Circle&nbsp;&amp;&nbsp;larger)&nbsp;==&nbsp;Circle)&nbsp;{isSubset&nbsp;=&nbsp;true;break;}}if&nbsp;(!isSubset)&nbsp;{uniCircle.push_back(Circle);}}cout&nbsp;&lt;&lt;&nbsp;uniCircle.size()&nbsp;&lt;&lt;&nbsp;endl;}
投递华为HUAWEI等公司10个岗位
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务