百度笔试题 | 飘过的小牛



百度笔试题 | 飘过的小牛

简答题(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

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts