公共题第五题,具体是一个用户登陆后综合判断他的注册时间和发文数量,然后按要求给出各种各样的提示(5种给定的)。与其说考逻辑判断不如说考代码风格,因为这样稍微复杂的if判断要写得清楚给后人维护也不容易……
可惜公共题最后一题枪编号,想到了要最低的非零数字拆分,但是没有想清楚规则,于是傻枚举……应该就文字写些思路敢情更好的
下面是互联网应用开发职位的专业题:
文件系统设计:有一个新产品,是某智能移动设备,上面要有很多数据存储在磁盘上。数据存储有两种类型,文件和文件夹,可以进行创建删除修改复制移动重命名等操作。
要求:
用户每一个操作都有历史版本,用户可以查看任何时间点的时候数据是什么样子
在大量、长时间的操作之后,依然能保持较小的空间占用量
我的解答大致是:首先磁盘分块,块有id,时间戳,块链链接前后的块,还有一个next_version指针指向更新的本块。在块级上面构建文件树,文件夹表指向下一层所有项目等等,这和普通fs是一样的。对文件树的操作都可以归结为对块的修改,而块只新增不修改,要修改的时候创建一个新块(具有新的时间戳),旧块的next_version指向新块。这样就可以保留所有历史版本。然后全局来个时间表,所有的时间点指针指向该时间的块,共反查方便。
大致参考的是贝尔实验室venti文件系统的设计
我的解答大致是:
看url是不是”about:”浏览器自留命令
parse ulr出protocol,host,path,port等
看本机host缓存查ip
dns查询
向host 80端口通信,http请求
服务器查看默认页面是?
脚本文件需要调用解释器/虚拟机
服务器返回http头,html内容
浏览器接受http头,解析html内容,下载图片/flash等
渲染页面,调用插件显示特殊内容,广告拦截
(不过广告拦截似乎应该是url那一步就判断了,还有判断mime类型我忘了写)
第二问的区别就是一个访问了host之后请求的是userlogin.jsp,服务器不是查找默认页面而是查找这个,并且发送get参数username=163,服务器脚本会访问到这个参数