本文仅记录与大佬聊天时所接触到的新姿势,以及自行实现或者查询到的内容
AC自动机 🔗
-
1.前提背景 🔗
先给你1亿个字符串,然后之后问你那1个字符串有没有在1亿个字符串里存在过你会想到咋做
-
2.延深问题 🔗
业界比较常见比较难的大概就是问你,一个很长的字符串。然后我有个敏感词库,问这个很长的字符串命中了哪些敏感词
-
3.如何实现 🔗
一亿个字符串的话我能想到的就是用字典来装,这样可以保证速度,但是实在是不够优雅…
-
4.敏感词库解决方案 🔗
如上内容只是冰山一角,无法适应黑产等复杂得很的人
ao men 炸金 hua_家Q 扒是二是二壹舅舅陆(这种就无法过阿里云的机审)
真正的实现应该还需要,精确匹配 结合 正则 、结合拼音检查再结合机器学习还要去掉各种什么stop word干扰的词,火星文得转成正常文字 🔗
循环链表 🔗
-
1.前提背景 🔗
网抑云音乐或者QQ音乐播放模式有一个列表循环,当你在第一首的时候往前退一首是第几首?
-
2.如何实现 🔗
那我寻思着用数组然后索引不就行了吗..
-
3.最佳解决方案 🔗
不愿意透露姓名的大佬:他其实是个最典型的循环链表
把第一首的prev连接最后一首,把最后一首的next连接第一首,循环就完成了,也不需要写一句if
关闭程序前把目前的请求都处理完才关闭 🔗
-
1.前提背景 🔗
程序升级要关闭你的程序,要求你关闭程序前把目前的请求都处理完才关闭
-
2.如何实现? 🔗
进入请求时+1,离开-1,然后关闭的时候不让请求进来,等在线为0就停机
-
3.大佬指点 🔗
- 当你用任务管理器去KILL,会发一个SIGTERM信号,点叉叉是SIGINT ,也可能是SIGTERM (windows/linux通用)
- 在C#中微软封装了此信号,用的是委托形式,根本看不出来.jpg。附上C#代码
1using System; 2class Program 3{ 4 static void Main(string[] args) 5 { 6 AppDomain.CurrentDomain.ProcessExit += new EventHandler(CurrentDomain_ProcessExit); 7 Console.CancelKeyPress += new ConsoleCancelEventHandler(Console_CancelKeyPress); 8 Console.WriteLine("Press any key to exit."); 9 Console.ReadKey(); 10 } 11 12 static void CurrentDomain_ProcessExit(object sender, EventArgs e) 13 { 14 Console.WriteLine("Exiting application..."); 15 } 16 17 18 19 static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e) 20 { 21 Console.WriteLine("Ctrl+C pressed"); 22 } 23}
-
4.大佬吐槽 🔗
我上次面试一个 “资深运维/开发”问他K8S要更新服务,然后问他这个问题
他告诉我让开发写个接口再写个程序每秒去请求那个接口什么时候接口里面说可以关了,再去关
后来那个人还对HR吐槽我说我总是问他技术细节,他都是管大局的
大佬の挑战 🔗
-
1.要求 🔗
- 动态执行C#代码
- 每一次执行的代码与原先的程序完全隔离(也就是不管什么文件操作、系统调用都不能执行或者不能影响宿主机,也不能看到其他人的文件,保证隔离和安全,写崩了也不能影响服务端程序)
- 请求过来冷启动这段动态执行的代码,要求1ms以内
- 要求能统计、控制这段代码耗费的CPU、内存
-
2.说明 🔗
-
3.结果 🔗
不愿意透露姓名的大佬:等你能解决这些问题 你就可以和我讨论后端技术了不然就只能扯扯皮
结语 🔗
如上内容只是和大佬聊天中的冰山一角,由于时间有限本文仅记录于2023年07月13日与大佬的聊天
你底子很差,后端的路很远,而工作现在又学不到,学这些东西本身又会很无聊,所以不如为了工作学
以上内容的记录与实现可能与大佬的阐述有些许分别,与大佬无关,纯粹是我太菜了的原因