当前位置:C++技术网 > 资讯 > 一份针对实践能力的MFC-数据库-网络通信的面试测试题

一份针对实践能力的MFC-数据库-网络通信的面试测试题

更新时间:2017-03-14 11:57:20浏览次数:1+次

MFC题:
1.编辑框、按钮、列表框等控件继承自什么类?
2.使用向导添加的按钮事件处理,向导为我们做了哪些工作?
3.DoDataExchange函数的作用是什么?
4.在创建工程后,对话框主窗口为A,如何在不重建工程的情况下快速将主窗口换为窗口B?
5.如何用最简洁的代码相互转换CStringW和CString类型?
6.PostMessage和SendMessage消息的区别是什么?
7.在哪里写代码可以实现主窗口启动前启动登录对话框,登录通过后显示主窗口,不通过关闭程序?
8.菜单点击事件、控件点击事件对应于什么窗口消息?
9.如何重载一个编辑框控件,实现只能输入数字功能的大致思路?
10.如何让窗口的子控件随着父窗口的大小变化而变化?

数据库题:
1.什么是主键?
2.什么是事务?
3.什么是存储过程?
4.查询一个公司的每一个部门的职员的平均年龄,并按平均年龄从大到小排列
5.使用一个语句同时更新一个员工的信息,使年龄加一年,工资也加1000.
6.什么时候使用字段自动递增,什么时候不使用字段自动递增?
7.在存储金额数据类型的时候,采用double好还是decimal好,为什么?
8.t_age表中有很多数据,一条数据的name为null,其他都是正常的。查询 select count(age) from t_age where name !=null  ,得到的数据是什么?
9.说说左连接的应用场景,举例说明?
10.为了提高操作数据库的效率,想用面向对象的方式来操作一个表,你会怎么实现?

网络:
1.TCP和UDP协议的区别?
2.交通信号灯的网络通信,使用TCP好,还是UDP好?为什么?
3.socket如何识别一个连接?
4.TCP服务端为什么要绑定监听的端口?
5.Windows中,要保证网络客户端界面不卡,如何实现网络数据通信?
6.如果要实现跨局域网通信,如何实现?
7.在应用层,如何保持连接的存活?有什么机制可以让双方确认相互都还活着?
8.网络程序运行中出现错误,如何调试?
9.一个后台服务端管理程序,界面按照客户端的编号列出了所有连接的客户端,但是网络不稳定,频繁断网。断网后,客户端会自动重新连接,这样服务器端原有存储的套接字也就失效了。如何保证服务器端时刻能够和客户端的顺利通信?
10.TCP通信,如何传输一个大文件,并且保证传输准确效率最高?

    登陆后,可以查看下面给出的参考答案。请先自己做完题目后,再登录查看参考答案,不要直接登录查看答案,否则效果不太好。请自觉哈。

MFC题:

1.编辑框、按钮、列表框等控件继承自什么类?
答:CWnd。
2.使用向导添加的按钮事件处理,向导为我们做了哪些工作?
答:事件处理函数声明(afx_msg开头的函数)、空函数定义体和消息映射事件绑定。(BEGIN_MESSAGE_MAP和END_MESSAGE_MAP宏之间添加的东西)
3.DoDataExchange函数的作用是什么?
答:绑定控件变量,用于变量与控件数据的交换。
4.在创建工程后,对话框主窗口为A,如何在不重建工程的情况下快速将主窗口换为窗口B?
答:修改主对话框类的enum { IDD = IDD_TMP_HOVER_DIALOG };中的IDD的值即可。
5.如何用最简洁的代码相互转换CStringW和CString类型?
答:
CStringA strA;
CStringW str(strA);//CStringA转为CStringW,利用构造函数完成

CStringW strW;
CStringA str;
str = strW;//利用赋值完成
6.PostMessage和SendMessage消息的区别是什么?
答:两个函数都是发送消息的,不同的是,PostMessage将消息投递到目标窗口的消息队列后就返回了,也就是调用后立即返回。而SendMessage要等待消息被处理后才返回。
7.在哪里写代码可以实现主窗口启动前启动登录对话框,登录通过后显示主窗口,不通过关闭程序?
答:在APP应用程序类的初始化实例函数InitInstance()中,创建一个登录对话框,如果登录通过验证,继续往后执行,如果不通过,直接返回FALSE,程序退出。
8.菜单点击事件、控件点击事件对应于什么窗口消息?
答:WM_COMMAND
9.如何重载一个编辑框控件,实现只能输入数字功能的大致思路?
答:添加一个类,继承自对应的MFC控件类,然后处理WM_CHAR或WM_KEYDOWN消息即可。
10.如何让窗口的子控件随着父窗口的大小变化而变化?
答:在父窗口的WM_SIZE消息中调整子控件的位置和大小即可。

数据库题:
1.什么是主键?
主键是可以确定唯一一条记录的字段(列名)。主键可以是单个字段,也可以是多个字段的组合。
2.什么是事务?
答:事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。事务有四个特性,分别是:原子性,一致性,隔离性和持久性。
3.什么是存储过程?
答:存储过程是一个预编译的SQL语句,他的优点是允许模块化的设计,也就是说只需创建一次,在该程序中就可以调用多次。例如某次操作需要执行多次SQL,就可以把这个SQL做一个存储过程,因为存储过程是预编译的,所以使用存储过程比单纯SQL语句执行要快。可以用一个命令对象来调用存储过程。
4.查询一个公司的每一个部门的职员的平均年龄,并按平均年龄从大到小排列
答:select AVG(age) as age_name from t_person group by depart ORDER BY age_name desc
5.使用一个语句同时更新一个员工的信息,使年龄加一年,工资也加1000.
答:update t_person set age = age+1,wage = wage + 1000 where name='张三'
6.什么时候使用字段自动递增,什么时候不使用字段自动递增?
答:当字段值为整型,而且是连续编号,不需要外部设置,可以使用递增。如果非整型,不会连续编号,需要手动设置,就不能使用自动递增。
7.在存储金额数据类型的时候,采用double好还是decimal好,为什么?
答:使用decimal好,因为decimal在存储数字时以字符形式存储,小数是精确固定的,而double则会采用近似值存储。
8.t_age表中有很多数据,一条数据的name为null,其他都是正常的。查询 select count(age) from t_age where name !=null  ,得到的数据是什么?
答:null
9.说说左连接的应用场景,举例说明?
答:查询员工工资列表的时候(工资表),然后需要在每一个员工记录后面查出对应的员工的家庭地址、联系方式等信息。(员工信息表)
10.为了提高操作数据库的效率,想用面向对象的方式来操作一个表,你会怎么实现?
答:将表的各个字段作为类的成员变量、要操作表格的数据,就相当于操作类的成员变量。对每一个成员变量的操作,都封装在成员函数中,成员函数内封装了基本的数据表的操作,对外来看,是操作这个对象。


网络:
1.TCP和UDP协议的区别?
答:TCP是面向连接的可靠传输,UDP是面向无连接的不可靠传输。
2.交通信号灯的网络通信,使用TCP好,还是UDP好?为什么?
答:UDP,因为信号灯的实时要求很高,对于传输的质量是其次。UDP的无连接方式可以提供实时要求高的应用需求。而TCP的可靠传输,可能会使数据传输产生一定的延迟而酿成车祸。
3.socket如何识别一个连接?
答:套接字,ip+端口。
4.TCP服务端为什么要绑定监听的端口?
答:一个计算机只有一个IP,这个IP可以与很多计算机通信,可以有很多个TCP服务端提供服务。为了区分不同的服务端程序,给每一个服务端指派一个端口,当接收到数据的时候,就根据套接字里的端口递送给被监听的端口,供对应的服务程序处理。如果不绑定,计算机就不知道将数据递送给哪一个服务程序处理了。
5.Windows中,要保证网络客户端界面不卡,如何实现网络数据通信?
答:同步多线程、异步单线程、事件、完成端口等。
6.如果要实现跨局域网通信,如何实现?
答:1)借助公网服务器,双方局域网连接到公网的服务器,然后通过服务器做存储转发,实现跨局域网通信。2)借助公网服务器,用于存储连接到服务器的套接字,双方只需要从服务器取得套接字,即可实现跨局域网通信。
7.在应用层,如何保持连接的存活?有什么机制可以让双方确认相互都还活着?
答:使用心跳机制,利用一个很小的数据包,定期通信。A向B发送心跳数据包,B收到后,回复确认数据包。如果A发送心跳数据包一段时间后,没有收到回复,重发几次,一直没有收到回复,便可认为B已经挂了。B在收到一次心跳数据包后,开始倒计时,如果一定时间内,没有收到心跳包,便可认为A挂了。
8.网络程序运行中出现错误,如何调试?
答:打印详细日志、抓取网络数据包分析、根据错误的症状和逻辑流程来分析等。
9.一个后台服务端管理程序,界面按照客户端的编号列出了所有连接的客户端,但是网络不稳定,频繁断网。断网后,客户端会自动重新连接,这样服务器端原有存储的套接字也就失效了。如何保证服务器端时刻能够和客户端的顺利通信?
答:按照客户端编号,来存储连接的套接字。当网络断开后重新连接的时候,服务器端删除客户端的套接字。当客户端再次连接的时候,根据客户端传过来的客户端编号,对应更新到客户端列表中,更新套接字。这样服务器端还是可以顺利的和客户端通信。
10.TCP通信,如何传输一个大文件,并且保证传输准确效率最高?
答:采用分片方式传输,将TCP数据报合理的大小作为一个分片的数据大小传输,降低数据报拆包组包的几率,可以大大提高传输效率。每一个数据片到达后,都要进行数据内容校验,确保准确无误的传输。