某公司高级软件师面试题
1 问题分析
(任选一题作答。0.5小时。20分)
1.1 问题一
假设有一个n级的表单流转流程,每一级至少有一个审批人。在表单初始提交的时候,有如下要求:
1. 一般情况下,表单提交给第1级审批人(此时称为从第0级向第1级提交)
2. 如果当前提交人是第i级的审批人,他可以跳过之前的级别直接从第i级向第i+1级提交
3. 一个用户可以是多个级别的审批人。在这种情况下,他必须从他能够审批的最低级别提交
4. 最后一级审批不得跳过
根据以上条件,画出判断当前用户初始提交级别的程序流图。
1.2 问题二
假设有以下场景:某学校将每个学年(School Year)划分为若干评分阶段(Grading Period),学生(Student)在不同阶段中可能在不同的班级(Class)上课(但在某一阶段中只在一个班级),并在阶段结束时获得一份成绩单(Report Card)。要求管理员能够查看历史记录(如指定学年、阶段、班级,查看在这个阶段中该班级所有学生的成绩单)。
根据以上条件,画出SchoolYear,GradingPeriod,Student,Class和ReportCard的关系图。
2 算法设计
(0.5小时。10分)
2.1 问题一
设计一个计算四则运算(加、减、乘、除)的算法。要求:
1. 考虑运算优先级
2. 可以不考虑括号
3. 不考虑字符串的分解问题,即假设你得到的输入是一个数组,每个元素是一个数字或运算符
3 实际操作
(上机题。任选2题作答。1.5小时。每题10分)
3.1 ASP
创建一个ASP页面,将Request.ServerVariables对象中的所有项目的Key和Value用一个表格输出到页面上,格式如下:
Key1 |
Value1 |
Key2 |
Value2 |
… |
… |
Keyn |
Valuen |
脚本语言使用VBScript。
3.2 ASP.NET
创建一个ASPX页面,从Students.xml中读出数据,在页面上用一个DataGrid或DataView输出。要求:
1. DataGrid需要包含列:学号(id)、姓名(name)、年龄(age)以及性别(gender)
2. 分页:每页10条记录,并且有首页、上一页、下一页、尾页按钮(Link buttons)以及当前页标
3. 排序:可以按照姓名(name)、年龄(age)以及性别(gender)排序
4. 翻页和排序互不影响,即翻页时保留当前排序状态,而重新排序时也保留当前页号
5. 使用C#语言
3.3 SQL
创建一个数据库,使之可以存储以下信息:
1. 学生信息
a) 学号
b) 姓名
c) 年龄
d) 性别
2. 课程信息
a) 课程编号
b) 课程名
3. 学生成绩(一个学生可能在多个课程中有成绩)
在此数据库中创建一个存储过程,从数据库中按获得的参数搜索出一个学生信息的列表。对于任意一个学生,如果该学生在某门课程上有成绩,则同时取出这门课程的信息及该学生的成绩。该存储过程接受的参数为(参数为NULL表示该搜索条件不起作用):
1. 姓名:按学生姓名的关键字搜索。可能为NULL
2. 年龄:按学生的年龄搜索。可能为NULL
3. 性别:按学生的性别搜索。可能为NULL
4 软件设计
(任选1题作答。0.5小时。30分)
4.1 问题一
一项目现有如下需求:
1. 从网络A中的Active Directory目录服务中同步已有的用户和组信息到网络B中的一个数据库,以实现用户的登录信息(用户名、用户基本信息、组成员信息,不包括密码)能在同一位置进行创建和维护。同步要经由Internet。两个网络的安全策略独立,但都允许常用端口(20、21、23、80、443)的通信。
2. 组成员关系要同步到网络B中的数据库。在网络A中添加/删除/修改的用户和组要被同步到网络B中的数据库中。
3. 须支持三种同步形式:
a) 自动同步(按天、星期或月)
b) 手动同步(Active Directory管理员手动启动同步)
c) 网络A的管理员通过提供的工具(此项目的一部分)将用户和组信息到处到一个文件,然后访问网络B的Web服务器,将此文件上传到Web服务器并进行导入。
问题:
1. 请判断出此项目中的需解决的几个技术层面的主要问题
2. 并根据您对软件设计的经验列出在此项目中要使用的技术要点
3. 设计出项目的应用程序架构
4. 填出图形中?处应该使用什么来接收同步的数据
注:不需要设计表结构
4.2 问题二
信息管理系统在构架、设计上、模块上有很多相似之处,建立可复用的产品框架在公司层面有很大的意义。
假设你需要设计一个系统的基础框架(framework)。该框架的目的是解决信息管理系统的一些通用的问题(例如,用户管理,用户认证等),其本身并不解决具体的业务问题,也不会被用户直接使用。后续开发的多个应用(application)将搭建在这个平台上,以便达到开发成本最小化、效率/质量最优化。
请根据你的理解,画出这个框架的结构图,并在图中说明:
1. 列出该基础框架应该包含的模块(或框架需要解决的问题)
2. 应用以何种方式和这个框架整合?
3. 应用间的通信如何处理?