企鹅2015校招笔试之(三)C/S模型压力算法设计实现
2015-04-23 00:27
253 查看
背景
小伙伴参加了企鹅厂的2015校招笔试,有五道大题,拿出三道算法类的题尝试着实现实现。这是第三道题:C/S模型压力算法设计第一题:抽奖算法实现可以看这里
第二题:整形长度计算算法可以看这里
题目
第三题的大意是:在某个C/S模型中,服务器最大的处理量是每秒10000次,设计一个算法,保证服务器可以正常运行。分析
这道题主要考察C/S模型中,服务器保护方面的知识,考虑到这是一道校招题,参加校招的都是项目经验相对缺少的学生,因此这道题主要考察的方向应该是算法思想方面的内容。我认为这道题可以通过这种方案来实现:客户端每发出一个请求,都保存在服务端的请求队列中,若服务端请求队列等于10000,以后的请求,都不加入队列,且对客户端做出异常反馈。
客户端每发来一个请求,处理完请求后,计算等待时间,若等待时间大于1秒,将请求队列中的所有请求发送给服务端处理功能模块,清空等待队列,清空等待时间
周而复始进行循环
源代码
注:这里的源代码并不能编译运行,只是一个思路的代码提现#include<time.h> double Clock_start = 0; // 记录开始时间 double Clock_end = 0; // 记录等待时间 int count = 0; // 记录请求队列数目 bool client = false; // 是否有客户请求 // 算法实现 void ProtectServer() { while(1){ // 使服务端一直运行 if(1000 <= Clock_end) // 如果等待时间大于一秒 { /* 处理当前等待队列的所有请求 */ Clock_start = clock(); // 记录当前时间 count = 0; } /* 接收客户端请求,有客户请求时,将client赋值为true */ if(client) // 如果有客户接入 { if(count<10000) // 当前客户请求队列是否大于10000 { count++; // 客户队列+1 /* 将客户端请求信息存储在请求队列 */ } else // 请求队列满时抛出异常 { /* 给服务器抛出满载异常 */ } } client = false; // 客户请求初始化 Clock_end = clock() - Clock_start; // 计算等待时间 } }
总结
企鹅厂这道题的考察点由传统的纯底层算法考察,转换为框架类算法考察,主要看应试者是否拥有分析需求,处理问题的能力。同时更重要的是考察应试者是否具备多人合作开发的某项潜质。整道题以小见大,但是相较于社招还是过于简单。相关文章推荐
- 企鹅2015校招笔试之(二)整形长度算法思路实现
- 企鹅2015校招笔试之(一)抽奖算法思路实现
- 2015校招经典算法笔试题
- 算法-美团2015校招笔试:写一个复杂度为n的排序算法
- google校招笔试题 2.2 长度为n的数组乱序存放着0至n-1. 现在只能进行0与其他数的swap,请设计并实现排序。
- 2015创发科技校园招聘笔试题——排列和组合的算法实现
- 2015校招笔试面试算法总结之蓝汛笔试
- 腾讯2015实习校招-整形长度算法思路实现
- 百度_2015_校招_笔试题_题来了
- Cocos2d-x《雷电大战》(6) 智能敌机AI来袭--飞行路径算法设计与实现(上)
- 名企笔试:百度2015春季实习生(01排序) 2017-04-06 算法爱好者
- 大数据算法设计模式(1) - topN spark实现
- 完美洗牌算法(2013年UC校招笔试、2016阿里实习生笔试)
- 阿里巴巴2015校招笔试题附加题1解答
- Latent Dirichlet Allocation(LDA)主题模型算法实现及源码解析
- 蛮力法:设计算法求解背包问题,并编程实现。
- 自学习循路的移动机器人模型设计与实现
- 中国象棋程序的设计与实现(六)--N皇后问题的算法设计与实现(源码+注释+截图)
- 《基于几何成像模型的鱼眼镜头图像校正算法和技术研究》实现
- 一种智能车控制算法的设计和实现