百度 度秘事业部 架构一面

总时长:1h
涉及:70%项目10%业务%10代码

项目方面:
略(与个人相关)

业务方面:
1.说明bot上线后,用户调用bot发生的一系列逻辑行为?
2.在开发bot时,你是如何定义log文件的格式,需要记录哪些数据?才能让策略和开发的同事能够更好的利用log中的信息呢?
3.详细描述一下百度的ODP框架,以及为什么选用这个框架呢?包含什么组件呢?主要的执行流程是?
4.Linux中查找log的字段,grep!

代码方面:
(插一句,百度真的很喜欢二叉树!)
二叉树的前序、中序、后序遍历
1.写一个树的三种遍历结果
2.写出三种遍历的递归版(这个很简单)
3.写出前序遍历的非递归版(面试前刚刷了后序遍历的非递归,然后前序没看就GG)

这里自我总结一下,对应leetcode上的三道题
在非递归中,中序最简单,后序最难。且一定会用到栈。
前序遍历与中序遍历的代码类似,都是每次都要先找到最左边的节点,然后进行栈操作,转向右节点。
不同的是,前序遍历在找最左边节点的时候就要先打印值,中序遍历是在每次到达最左边后,进行栈操作时才打印值。
前序遍历

中序遍历
后序遍历难在除了用栈来存储节点外,还需要有一个pre节点来存储上一个遍历的节点。这个节点的作用用作标记当前节点的左右子节点是否已被遍历过。
首先从栈中取元素,如果已经到叶子节点或者其左右子节点均被遍历完,则打印值,该节点出栈,并将pre节点记为当前节点。
否则,继续进栈操作,这里需要注意,后序遍历的顺序为左-右-中,根据栈的先进后出原则,先将右节点入栈,再将左节点入栈。
后序遍历

虽然面试没有写出来,还是很感谢面试官的认真态度。
#百度##面经##校招#
全部评论

相关推荐

1 7 评论
分享
牛客网
牛客企业服务