简答题(30分)
1.用简单语句描述数据库操作的步骤(10分)
1)连接数据库,并检查连接是否成功;
2)若连接成功,输入数据库操作命令;
3)为保证系统的稳定性,可选择备份数据库原有数据;
4)运行数据库操作命令;
5)关闭数据库连接;
2.写出TCP/IP的四层结构(10分)
1)应用层:用户使用应用程序进行通信;
2)传输层:在遵守协议的基础上,源主机和目的主机进行数据的传输;
3)网际层:在网络中,处理数据的路由和转发,保证数据准确送达;
4)网络接口层:将ip数据报解析为帧,在物理链路上进行透明的比特流传输;
3.什么是MVC结构,并描述各层结构的作用(10分)
MVC模式是三层架构模式,分别为:Model――模型,View――视图,Controller――控制器,MVC模式是软件工程中的一种软件架构模式。
1)模型:程序员编写程序应有的功能(实现算法等)、进行数据库设计和数据库管理;
2)视图:界面设计人员进行图形界面的设计;
3)控制器:负责转发请求,对请求进行处理;
简单来说,就是当你点击某一链接时,控制器会调用相应的模型来完成这次点击执行的操作,然后调用对应的图形界面来显示操作的结果。实现了各个功能模块的分离,降低了耦合性。
二、算法与程序设计题(40分)
1、字母a-z,数字0-9,现需要其中任意3个作为密码,请输出所有可能组合。(伪码CC++JAVA)(10分)
我的思路是将a-z映射为10-35,然后进行dfs遍历所有组合
2、实现字符串反转函数(10分)
这个思路很简单,但是具体实现的时候要考虑程序的鲁棒性。比如,输入的是一个空字符串,或者输入是一个空指针,对于这些情况,我们要分情况讨论。
3、给定字符函数a、插入 b、删除 c、替换
例如字符串A=acegf,字符串B=adef,最少需要2步操作将A转换为B,
即第一步将c替换为d,第二步将g删除;
(1)请问将字符串A=gumbo转换为字符串B=gambol,最少需要几步操作,列出如何操作(2分)
(2)任意字符串A和字符串B,如何计算最小操作次数,计算思路,并给出递归公式(3分)
(3)实现代码(注意代码风格与效率)(15分)
这道题和《编程之美》上的一道题目相同,是经典的字符编辑DP问题。
三、系统设计题(30分)
RSA SecurID安全系统
应用场景:这是一种用户登录验证手段,例如银行登录系统,这个设备显示6位数字,每60秒变一次,再经过服务器认证,通过则允许登录。问如何设计这个系统?
1)系统设计思路?服务器端为何能有效认证动态密码的正确性?
2)如果是千万量级用户,给出系统设计图示或说明,要求子功能模块划分清晰,给出关键的数据结构或数据库表结构。
考虑用户量级的影响和扩展性,用户密码的随机性等,如果设计系统以支持这几个因素.
3)系统算法升级时,服务器端和设备端可能都要有所修改,如何设计系统,能够使得升级过程(包括可能的设备替换或重设)尽量平滑?
这道题属于一个开放型题目,但是对这个问题有过思考的话,应该还是很简单的。因为以前网易就曾出过这种设备,当时还研究了一下。
我当时答的是:
1)这个设备内置:精确的时钟、一个种子文件、一块电池、一个lcd显示屏。
通过对时间和种子文件的组合,得到一个数字,然后再通过二次加密(如采用hash算法),得到一个6位数。验证的方法相似,就是系统保留已经使用的设备的种子文件,通过相同的加密方法来验证密码的正确性。
2)对于随机性因素而言,我主要采用的思想就是预处理机制+多处理机。根据用户所在的省或者市,用对应的处理机单独处理,可以存储用户设备的种子文件,可以在用户提交密码后迅速计算结果,并到结果文件中进行验证。
3)对于系统升级来说,要综合考虑系统和用户的情况。对系统而言,要保证系统在升级时不会出现bug;对用户而言,要保证升级时间尽量短,以免耽误用户的使用。
Read full article from 百度笔试题 | 飘过的小牛
No comments:
Post a Comment