首页
关于
Search
1
2023 年保研经验贴 [计算机-末九Rank50%-入北计清深-北计直博]
1,104 阅读
2
FreeBSD Kernel-编译环境搭建
411 阅读
3
Linux Kernel-THP阅读分析[Hang up]
402 阅读
4
Linux Kernel-编译调试环境搭建
319 阅读
5
Linux Kernel-源码阅读环境搭建
305 阅读
内核
源码分析
阅读笔记
Rust
语法
习题
读书笔记
深入理解计算机系统
论文
技术之外
开发
rcore-arm
登录
Search
yyi
累计撰写
49
篇文章
累计收到
2
条评论
首页
栏目
内核
源码分析
阅读笔记
Rust
语法
习题
读书笔记
深入理解计算机系统
论文
技术之外
开发
rcore-arm
页面
关于
搜索到
6
篇与
的结果
2024-04-13
My Terminal
sudo apt install zsh sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" curl -sS https://starship.rs/install.sh | sh git clone https://github.com/rupa/z.git $HOME/.oh-my-zsh/custom/plugins/z git clone https://github.com/zsh-users/zsh-autosuggestions $HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestions git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $HOME/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting git clone https://github.com/MichaelAquilina/zsh-you-should-use $HOME/.oh-my-zsh/custom/plugins/zsh-you-should-use git clone https://github.com/zsh-users/zsh-history-substring-search $HOME/.oh-my-zsh/custom/plugins/zsh-history-substring-search plugins=(z git zsh-autosuggestions zsh-syntax-highlighting zsh-you-should-use zsh-history-substring-search)我的花里胡哨的Starship,基于Pastel Powerline Presetcommand_timeout = 1500 format = """ [](#9A348E)\ $os\ $username\ [](bg:#DA627D fg:#9A348E)\ $directory\ [](fg:#DA627D bg:#FFCCFF)\ $git_branch\ $git_status\ [](fg:#FFCCFF bg:#86BBD8)\ $c\ $elixir\ $elm\ $golang\ $gradle\ $haskell\ $java\ $julia\ $nodejs\ $nim\ $rust\ $scala\ [](fg:#86BBD8)\ $docker_context\ """ right_format = """ $cmd_duration\ [](fg:#86BBD8 bg:#33658A)\ $time\ [ ](fg:#33658A)\ """ # Disable the blank line at the start of the prompt # add_newline = false # You can also replace your username with a neat symbol like or disable this # and use the os module below [username] show_always = true style_user = "bg:#9A348E" style_root = "bg:#9A348E" format = '[$user ]($style)' disabled = false # An alternative to the username module which displays a symbol that # represents the current operating system [os] style = "bg:#9A348E" disabled = false # Disabled by default [directory] style = "bg:#DA627D" format = "[ $path ]($style)" truncation_length = 3 truncation_symbol = "…/" # Here is how you can shorten some long paths by text replacement # similar to mapped_locations in Oh My Posh: [directory.substitutions] "Documents" = " " "Downloads" = " " "Music" = " " "Pictures" = " " # Keep in mind that the order matters. For example: # "Important Documents" = " " # will not be replaced, because "Documents" was already substituted before. # So either put "Important Documents" before "Documents" or use the substituted version: # "Important " = " " [c] symbol = " " style = "bg:#86BBD8" format = '[ $symbol ($version) ]($style)' [docker_context] symbol = " " style = "bg:#06969A" format = '[ $symbol $context ]($style)' [elixir] symbol = " " style = "bg:#86BBD8" format = '[ $symbol ($version) ]($style)' [elm] symbol = " " style = "bg:#86BBD8" format = '[ $symbol ($version) ]($style)' [git_branch] symbol = "" style = "#808080 bg:#FFCCFF" format = '[ $symbol $branch ]($style)' [git_status] style = "#808080 bg:#FFCCFF" format = '[$all_status$ahead_behind ]($style)' [golang] symbol = " " style = "bg:#86BBD8" format = '[ $symbol ($version) ]($style)' [gradle] style = "bg:#86BBD8" format = '[ $symbol ($version) ]($style)' [haskell] symbol = " " style = "bg:#86BBD8" format = '[ $symbol ($version) ]($style)' [java] symbol = " " style = "bg:#86BBD8" format = '[ $symbol ($version) ]($style)' [julia] symbol = " " style = "bg:#86BBD8" format = '[ $symbol ($version) ]($style)' [nodejs] symbol = "" style = "bg:#86BBD8" format = '[ $symbol ($version) ]($style)' [nim] symbol = " " style = "bg:#86BBD8" format = '[ $symbol ($version) ]($style)' [rust] symbol = "" style = "#8B0000 bg:#86BBD8" format = '[ $symbol ]($style)' [scala] symbol = " " style = "bg:#86BBD8" format = '[ $symbol ($version) ]($style)' [time] disabled = false time_format = "%R" # Hour:Minute Format style = "bg:#33658A" format = '[ ♥ $time ]($style)'
2024年04月13日
165 阅读
0 评论
0 点赞
2023-12-27
腾讯微信-小程序 C++后台开发面经
一面:自我介绍,做题,不用跑,解释就行,都不难。//笔试要求 //1. 独立完成。可以搜任何资料,但是不能直接搜题解。 //2. 允许使用本地IDE,限时内确保代码都贴上来即可。 /*第1题 给定一个整数 n ,返回 n! 结果中尾随零的数量。 提示 n! = n * (n - 1) * (n - 2) * ... * 3 * 2 * 1 示例 : 输入:n = 3 输出:0 解释:3! = 6 ,不含尾随 0 */ // 5, 10, 15 .. 100 = 5(1, 2, 3, 4, 5 .. 20) // 对于每个 5k,会贡献 1 个 0, #include <cstdio> int main() { int n; scanf("%d", &n); int ans = 0; while(n) { ans += n /= 5; } printf("%d\n", ans); } /* 第2题 给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。 请你将 list1 中下标从 a 到 b 的全部节点都删除,并将list2 接在被删除节点的位置。 下图中蓝色边和节点展示了操作后的结果: https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/11/28/fig1.png 请你返回结果链表的头指针。 示例 1::list1 = [0,1,2,3,4,5,6], a = 2, b = 5, list2 = [1000000,1000001,1000002,1000003,1000004] 输出:[0,1,1000000,1000001,1000002,1000003,1000004,6] 解释:下图中蓝色的边和节点为答案链表。 https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/11/28/merge_linked_list_ex2.png 数据范围: 3 <= list1.length <= 10^4 1 <= a <= b < list1.length - 1 1 <= list2.length <= 10^4 */ /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ #include <cstdio> struct Node { int val; struct Node *next; }*head_a, *head_b; // we assume a & b are malloced void merge_between(int a, int b) { struct Node *p = head_a, *q = head_a; // assume a, b > 0; a --; while(a -- ) p = p->next; while(b -- ) q = q->next; q = q->next; struct Node *cur = p->next; // delete from a to b; while(cur != q) { struct Node *tmp = cur; cur = cur->next; free(tmp); } p->next = head_b; p = head_b; while(p->next != NULL) p = p->next; p->next = q; } /* 第3题 实现支持下列接口的「快照数组」- SnapshotArray: - SnapshotArray(int length) // 初始化一个与指定长度相等的 类数组 的数据结构。初始时,每个元素都等于 0。 - void set(index, val) // 会将指定索引 index 处的元素设置为 val。 - int snap() // 获取该数组的快照,并返回快照的编号 snap_id(快照号是调用 snap() 的总次数减去 1)。 - int get(index, snap_id) // 根据指定的 snap_id 选择快照,并返回该快照指定索引 index 的值。 内存用量不超过32MB,请注意算法复杂度。 // COW 实现一个链表数组,长度为 N,节点包括nxt, val, snp, 对于每次 Set(k, v), 在第 K 位的 节点的最后一个链表节点上,若有 snp 标记,则挂一个新节点,否则直接修改, 当 snp 时,给数组中所有的节点的标记打好 示例: 输入: ["SnapshotArray","set","snap","set","get"] [[3],[0,5],[],[0,6],[0,0]] 输出: [null,null,0,null,5] 解释: SnapshotArray snapshotArr = new SnapshotArray(3); // 初始化一个长度为 3 的快照数组 snapshotArr.set(0,5); // 令 array[0] = 5 snapshotArr.snap(); // 获取快照,返回 snap_id = 0 snapshotArr.set(0,6); snapshotArr.get(0,0); // 获取 snap_id = 0 的快照中 array[0] 的值,返回 5 提示: 1 <= length <= 50000 题目最多进行50000 次set,snap,和 get的调用 。 0 <= index < length 0 <= snap_id < 我们调用 snap() 的总次数 0 <= val <= 10^9 */ //请补充下面类的实现: #include <cstdio> #define QUERY_NUMS 1 struct Node { int val; int snp; struct Node* next; }pool[101001]; struct Array { struct Node* head, *tail; }a[500100]; #include <stack> using std :: stack; stack<Node*> changed; char op[50010][15]; int opval[50010][2], pool_cur, snp; int main() { // assume input : int T = QUERY_NUMS; for(int i = 0; i < QUERY_NUMS; i ++ ) { if(op[i][0] == 'S') { // init for(int j = 0; j < opval[i][0]; j ++ ) { a[j].head = a[j].tail = pool[cnt ++]; a[j].head->val = 0; a[j].head->snp = -1; changed.push(a[j]); } puts("null"); } else if(op[i][0] == 's' && op[i][1] == 'e') { if(a[opval[i][0]].tail.snp != -1) { struct Node* tmp = pool[cnt ++ ]; a[opval[i][0]].tail->next = tmp; tmp->val = opval[i][1]; tmp->snp = -1; changed.push(tmp); } puts("null") // set } else if(op[i][1] == 'n') { // snap while(!change.empty()) { Node * tmp = change.top(); change.pop(); tmp->snp = snp; } printf("%d\n", snp); snp ++; } else { // get struct Node * head = a[opval[i][0]].head; while(head->next && head->next->snp < opval[i][1]) { head = head->next; } printf("%d\n", head->val); } } }给了一个思考题,m 个棕眼睛,n 个蓝眼睛,每天公布是否有蓝眼睛,如果确定自己是蓝眼睛,就要离开,问多少天会全部离开。一开始没想出来,面试官提示假设说 n=1,发现可以递推,答案是 n+1。聊实习:你说高光链路建设,怎么个建设法录制和裁剪是同步异步的?怎么实现的?聊八股:函数调用影响哪些寄存器?Linux、Android 的系统的内存排布浏览器输入链接按下回车都发生了啥问那 HTTPS 多了啥你没提到 TCP,不用 TCP,还能 HTTP 么?
2023年12月27日
153 阅读
0 评论
0 点赞
2023-12-27
美团基础架构-分布式数据库面经
不算标准面经吧,没做太多记录美团目前为止是两面,我猜测二面就是 ld(根据年龄和聊的内容)第一面是比较纯粹的技术面,问的比较难(相对于我之前遇到过的)从数据结构开始:了解布隆过滤器么?不了解,现在让你解决一下快速判断一对 k-v 是否在数据库里,你怎么做说了个 hashtable 挂链,在这细聊了一下没想到布隆过滤器主要就是两次哈希来避免哈希冲突,我哭了,之前面试里想到过类似的答案。说一下跳表和平衡树的区别,为什么 Redis 选择跳表那聊聊操作系统吧:进程线程协程你用 go 对吧,goroutine 调度的时候会调用阻塞的系统调用么?为什么你说不会,那如果需要发起文件/网络 IO 这类阻塞的系统调用,Go 怎么做网络 IO 和文件 IO 是阻塞的么?有什么区别?你项目里有个涉及到 CPU 压缩时间换 IO 时间的策略,你了解过 CPU 压缩时间和 IO 时间的区别量级么?你项目里涉及到一个 Go 的编译器,能聊聊么?其他太多的记不起来的,只知道答得都不太好,之前没深挖过自己做的细节。感觉过不了了,索性摆烂了,开始反问。反问了不少,主要可能关于分布式数据库、infra 的挑战和对比业务的选择之类的。没想到一面第二天过了,约了第三天二面二面明显是个 leader,没要我自我介绍,上来先说不会给我压力,我们简单聊聊天。聊了一下之前做逆向的时候做的事情,解决什么问题,总结了什么方法。对未来选择有什么想法。聊的很开心。
2023年12月27日
104 阅读
0 评论
0 点赞
2023-10-19
字节Data-数据平台后台开发实习面经
Day0: 官网流程流转至简历评估Day1:约面Day2Day2:一面自我介绍 大一大二主要做网络安全逆向工程方向,国奖 大三第一次在字节深圳后端开发,后到腾讯做后端开发在你之前的经历中有挑战性的、比较有技术含量的讲讲 字节跳动-Golang编译器,我当时没学过编译原理,实现了xxx,最大的困难在xxx,解决方法:Patch Compiler, 考察快速学习能力。这个是完成了还是只是展示数据库数据库怎么做故障恢复?:redolog只有redolog么 :undolog、binlog。其实还有仨log,但是没答上索引怎么做的:数据结构 B+ 树B+ 树有什么优势:和AVL、B树比较了一下,层数与IO索引什么时候会失效:字符串 %like,联合索引最左匹配,索引计算和函数网络浏览器输网址经过什么过程?:每次面试都问过,换一个吧TCP和UDP区别:TCP可靠,UDP不可靠,TCP用算法保证可靠,包括流控、拥塞、窗口,面向连接什么时候用UDP:视频等丢个包没什么问题、DHCP、HTTP3等避免TCP历史包袱OSLinux为什么不能直接放到Win上运行:文件格式不同、系统调用、库函数等进程线程区别:分配资源与CPU资源,进程可以有多个线程,线程共享进程的虚拟内存,切换快。写一个高并发,用多进程还是多线程:我倾向于多线程,性能优势硬件限制什么情况下可能必须要用多进程:不太会,但是比如一个人崩溃不能影响别人的这种情况只能用多线程。不然线程会导致所有人都崩溃。Redis用过么,Zset了解么:用过,不了解原理,听说过,不了解原理。消息队列用过么:用过,不了解原理思维题:一亿个整数去重: 直接换入换出不考虑虚拟内存:用基数排序思想,每次只处理最高位相同的数有没有特殊数据结构可以处理:我说的哈希,后面想到应该是问的布隆过滤器或者bitset算法题力扣179,把数组重排,组合成最大数 直接sort排序即可,cmp函数用字符串1+字符串2的大小做比较力扣47,有重复数的全排列 开个map,每个排列位置有一个map,当前位置用过数字k,本次遍历后面的k都跳过有什么要问的么晚上八点半通知过了,约Day3二面Day3 二面:自我介绍了解RPC的底层架构么高精度A+B,带正负有什么要问的么Day4 早上十点半通知过了,约十一点半HR面Day5:OfferCall + Offer
2023年10月19日
159 阅读
0 评论
0 点赞
2023-09-13
2023 年保研经验贴 [计算机-末九Rank50%-入北计清深-北计直博]
1 个人情况 截止于夏令营提交材料时院校:末九专业:理科试验班,计算机方向成绩:11/24,综合排名 2/24,夏令营时没有综合排名证明,只能靠嘴说英语:CET-6 472,CET-4 517竞赛:全国信安一等,逆向工程方向奖学金:约等于无科研:一点没有项目:Mips 流水线处理器课设,字节跳动夏令营 Go 语言字节码设计与解释器实现。实习:一段字节后端开发,业务开发,CRUD。一段腾讯后端开发,基础架构,连 CRUD 都没有了,K8s 运维。目标:清北华五网安/软工/SYS,除了 AI 都行, 我比较讨厌AI。如果去不上考虑雅思润了。最开始不太想直博的,实习的挺爽的,但是了解到近年行情,觉得读博越来越难,而且做sys沉淀一下也能接受。最坏情况下大不了毕不了业,也就那样了。最终去向:北京大学计算机学院计算机系统结构直博,老师本身不放随便实习,但是组里和华为、蚂蚁合作,会挂在华为、蚂蚁那边带薪远程实习(我jio得很香!)。2 夏令营申请学校/学院类型入营优营复旦大学/计算机学院不考虑直博是未参加清华大学/深圳研究生院专硕是否北京大学/计算机学院直博是是上海交通大学/网络安全学院不考虑直博否否南京大学/计算机学院学硕否否南京大学/软件学院专硕提前拒绝否中国科学院/计算技术研究所学硕提前拒绝否注:复旦夏令营撞期末,提前跟捞我的老师说希望不要浪费他名额,但是有点晚了联系清华本部的老师,说在深圳借个名额,深圳老师又给个考核,没做但是被捞进去了南软出名单前一天晚上老师打电话,问捞了是不是确定会去,答复撞了 ICT 的营,祝老师招生顺利ICT 面试完老师承诺一定能入营,但是北大优营之后提前和老师说接 offer 不去了3 夏令营参营清华大学深圳国际研究生院夏令营流程网络机试,和本部一起,不过是双机位在线第一天活动、破冰,请假了第二天面试,分综合面试和学术面试第三天公布优营,请假了机试机试三道题,一道送分题,爆搜即可,一道大模拟,硬钢了 4h 发现是合并数据,最后爆 0,第三题据说是贪心就能拿很多分,笑死,根本没看面试面试发挥的垃圾的一批,面试老师给我的感觉也一般,可能就是不 match 吧综合面试:一个论文摘要,读一句翻译一句,虽然翻译的一般但是应该还行,大体看懂了一些英文问题对答,包括喜欢什么书为什么之类的,很基础的问题还有一些中文问题对答,不是很值得记录技术面试:5 分钟自我介绍,期间被老师打断说你不要讲了,继续下一步吧(在我没超时的前提下)。这也是我对面试印象很差的原因。后面问的问题都很没营养,包括排名差为什么能保研,你们班的制度什么样子,你的竞赛含金量是怎么样的,怎么证明。还问了机试做的一般,有什么想法么。一些流程之外本来我是做网安的,联系的本部网研院某老师,某老师在本部夏令营已结束的时候让我加他微信(此时距离我发邮件已过去 20 天),和我说可以同时报本部和清深的夏令营,他会从清深 X 老师处借一个名额。此时我其实不太想报的,因为已经有意向去 PKU 了,想着假装忙忘了就好了,但是截止前一天被老师催了,只好报了。X 老师是研控上一大篇 1.0,第一印象其实一般。此外,在我期末的时候 X 老师安排了考核,我说我可能要复习,没时间做。但是最后还是做了下。X 老师后来让我联系他的一个研究生,借研究生之口劝我报一个澳洲什么学校(完 全 没 听 过)的直博联培,并称极端情况下如果夏令营发的 offer 的同学都不去联培,预推免有愿意去的,可能会鸽夏令营的 offer。至此,我对这个组印象更差了。此外我也很迷惑,不是说好的本部老师从你这借名额么,你咋还要把我推出去呢?所以其实我对 THUSZ 这个营也没怎么上心...,当然,看上去 X 老师对我也没怎么上心。北京大学计算机学院夏令营流程北大的夏令营看上去是三天,实际上只有两天。第一天活动+答疑+机试,第二天或第三天各研究所自行安排,我的面试在第二天上午。机试机试1小时40分钟,签了协议,而且也是去向,这里就不多说了,机试规则不爆氮即可,有两道题保证大家可以不爆氮,比lc easy还easy那种。面试面试感觉和具体研究所安排关系比较大,我们是自我介绍5min+抽题,抽到就回答,回答的同时可能会被进一步拷打。4 联系老师4.1 清华大学网研,网安,副教授1老师对我做的物联网安全相关的内容比较感兴趣,但是这块我做的不多,而且觉得希望不大,遂拒绝面试网研,网安,副教授2非常奇葩。同学推荐我的老师,发了邮件之后20天回的我,当时感觉就是是不是被别人鸽了。我没有报清网的夏令营,老师说可以在清深借老师3的名额招我,遂让我联系老师3.其实我已经有点婉拒了,因为当时觉得北大稳了(事实证明并不稳,一样过了考核的一位同学面试被挂了)。深圳,网安,副教授3。。。。。。这..。都在上面了。4.2 北京大学计算机,系统,教授1联系后给了面试,第一次主要提了三点直博能接受么?做sys能受得了么校区在昌平能接受么?都能,做个项目吧。遂留了个Linux内存模块,让读了然后整理上下层接口,给出迁移到FreeBSD的方案。最后这东西也成了我的毕设。二面晚了40分钟,明说只给我15分钟,之后还有别的同学,然而我准备了一个小时,只好强行随机应变。面试之后当场说明还比较满意,可以捞营但是营内还需竞争。4.3 中科院计算所处理器,安全,研究员1 :李炼老师老师人很好,先找了两个导师面我,我自己觉得答得不是很好,但是已经到我自己水平线了。没想到过了。我因为个人原因,还放了老师面试鸽子。后来面试聊了一个小时,说对我很感兴趣,可以夏令营再来聊聊。聊的问题主要涉及到逆向工具的使用、对工具的理解,基础的OS知识,对Fuzz的了解,对漏洞的了解之类的。4.4 复旦大学计算机,安全,副教授1和副教授2差不多,而且答应捞营,但是捞营后面考核还要靠自己。确实把我捞进去了。可惜入营名单公布前两天,学院公布考试时间,撞了。这时候找老师让他别推荐了,结果有点晚,还是入营了。计算机,软件,教授1给我实验室信息,让我看看,我对副教授2比较感兴趣,就说我自行联系他了计算机,软件,副教授2两个老师一起考核了我一下,还是一些在逆向工程中做了的一些事,以及一些基础知识,包括对逆向工具的理解(递归下降、线性扫描),如何归类竞赛题目、遇到什么题目会有什么方法(我归类主要是混淆和加密,混淆包括编译器类型的混淆、虚拟机、基于系统特性的混淆,主要就是动静结合,简单说了下断点和原理什么的)。面完说捞不了营,但是进营一定要我。4.5 武汉大学计算机,软件,教授1WHU老师非常热情,而且简单聊几次之后感觉老师人也很好。面了一个小时,和前面的都差不多。提了个小问题:如果有一万个相似的二进制让我分析怎么办。后面聊了聊他对组里的管理,包括做的各种方向。短短接触觉得这个老师至少人很好,如果没有更好的offer其实挺想去的。他甚至打电话督促我让我报夏令营,可惜当时北大已经面完了。btw,他说捞不了营。4.6 南京大学软件,软件,副教授1只有邮件往来,主要聊了下是否能接受专硕,看上去就是到他那给企业做横向,其实我觉得挺能接受的。后来出入营前一天晚上十点多给我打电话,问捞了我应该能进,捞了的话是不是一定会去。因为和计算所冲突了,遂拒。
2023年09月13日
1,104 阅读
2 评论
11 点赞
1
2