第18章 毕业(2 / 8)
行的转账操作相互隔离,不会出错。”
第三位评委一脸严肃,抛出问题:“算法设计里,动态规划算法挺常用的。你给我讲讲,这动态规划算法到底是个啥思路?拿背包问题举例,怎么用它来解决?别给我讲得太复杂,讲清楚点儿。” 云宝认真作答:“动态规划算法,简单说,就是把一个复杂问题拆成好多小问题,这些小问题还有重叠的部分。我们把小问题的答案记下来,下次再遇到一样的小问题,就不用再算一遍,这样就能提高算法效率。就拿背包问题来说,假设有个背包,能装 10 斤东西,有 3 个物品,重量分别是 3 斤、4 斤、5 斤,价值分别是 5 元、6 元、7 元。我们要想办法把物品装进背包,让背包里物品总价值最大。我们可以建一个表格,一行一行地看每个物品装不装。比如先看第一个物品,要是背包容量是 3 斤,能装下它,就把它的价值 5 元写在表格里。要是背包容量小于 3 斤,就写 0。然后看第二个物品,要是背包容量是 4 斤,装下它,价值就是 6 元,要是装不下,就看装第一个物品的价值,选价值大的写进表格。就这样,慢慢把表格填满,最后就能知道怎么装物品,能让背包里物品总价值最大。”
评委追问道:“要是物品的重量和价值不是整数,是小数,咋调整动态规划算法?你可别瞎编。” 云宝思索片刻,缓缓说道:“要是重量和价值是小数,我们可以先把它们都放大一定倍数,变成整数。比如重量是 斤,价值是 元,我们都乘以 10,变成重量 5 斤,价值 8 元,同时把背包容量也乘以 10。然后按整数的情况用动态规划算法算出结果,最后再把结果除以放大的倍数。比如说,算出背包里物品总价值是 80 元,因为之前都乘以 10 了,所以实际总价值就是 8 元。这样就能在不改变算法基本思路的情况下,解决小数带来的麻烦。”
第四位评委目光犀利,开口问道:“网络编程里,tcp 协议和 Udp 协议有啥不一样?在简单的视频聊天场景里,该选哪个协议,为啥?” 云宝从容回答:“tcp 协议是有连接的,传数据可靠,它通过三次握手建立连接,传数据的时候会检查对错,错了就重发,能保证数据顺序对。Udp 协议没连接,传数据不太可靠,不保证顺序,但它传得快,开销小。在视频聊天场景里,一般选 Udp 协议。因为视频聊天对实时性要求高,偶尔丢几个数据对画面影响不大,要是用 tcp 协议,数据错了重发,就会让画面卡顿,影响聊天效果。比如说,我们视频聊天的时候,偶尔一两个字没听清不影响交流,但要是画面一直卡,就没法好好聊天了。而 Udp 协议虽然可能会丢几个数据,但能保证视频画面比较流畅。”
评委反驳道:“Udp 协议不可靠,用它做视频聊天,怎么尽量保证数据可靠?别给我扯些没用的。” 云宝回应道:“可以用一些办法提高 Udp 协议在视频聊天里的数据可靠性。比如用前向纠错技术,发送端发数据的时候,多送一些能用来恢复数据的冗余数据,接收端就能用这些数据把丢的数据找回来。还能在应用层自己写个简单的重发机制,接收端发现数据丢了,就叫发送端再发一次。另外,合理设置数据包大小和发送频率,也能在一定程度上让数据更可靠。通过这些办法,在保证视频实时性的同时,能让 Udp 协议传的数据更靠谱。”
第五位评委一脸冷漠,开口道:“软件工程里,软件测试很重要。你说说软件测试主要有啥方法?再讲讲,怎么做好单元测试?别讲得太专业,讲明白点儿。” 云宝回答:“软件测试主要有黑盒测试、白盒测试和灰盒测试。黑盒测试就是从用户角度出发,不管程序里面咋写的,只看输入和输出对不对。白盒测试是针对程序里面的代
↑返回顶部↑
温馨提示:亲爱的读者,为了避免丢失和转马,请勿依赖搜索访问,建议你收藏【顶点小说网】 m.dy208.com。我们将持续为您更新!
请勿开启浏览器阅读模式,可能将导致章节内容缺失及无法阅读下一章。