首页 » 技术分享 » 程序员笔试题--民生银行

程序员笔试题--民生银行

 

今天的笔试和以往最大的不同就是,是在电脑上笔试。感觉还不错,呵呵

1、首先是选择题,分为单选和多选。涉及到数据结构,网络协议,软件工程,sql,操作系统。

 1)Tcp/ip协议通过什么方式判别不同的进程

 端口号!

 2)URL可以对应于几个IP地址

 这个我还在查找!希望知道的同学留言给我哦!

 3)查询数据库的时候,在什么情况下可能会导致死锁

 4)软件工程里面:软件开发阶段包括哪些内容


 5)黑盒白盒测试的功能

  (转)黑盒测试
黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。 黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。

白盒测试
白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。 “白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。还有一个灰盒测试灰盒测试灰盒测试,确实是介于二者之间的,可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。 灰盒测试结合了白盒测试盒黑盒测试的要素.它考虑了用户端、特定的系统知识和操作环境。它在系统组件的协同性环境中评价应用软件的设计。灰盒测试由方法和工具组成,这些方法和工具取材于应用程序的内部知识盒与之交互的环境,能够用于黑盒测试以增强测试效率、错误发现和错误分析的效率。 灰盒测试涉及输入和输出,但使用关于代码和程序操作等通常在测试人员视野之外的信息设计测试。

 6)哈弗曼编码

  这个是个很简单的问题,就是问长度。

 7)稳定排序算法

  稳定的排序:冒泡,归并,插入,基数排序;

  不稳定排序:快排,堆排,选择,希尔排序


 8)链表的删除

 链表的删除,快捷;因为只需要修改指针;

 现在有一个问题:不知道头指针的一个链表,p指向链表中的某点,现在要删除P点怎么做?

 分两步:(1)将p指向节点的值用p->next指向的值替换,即:p->data=p->next->data;(2)p->next=p->next-next;

 9)TCP的三次握手


2、接着就是答题:

 1) 建数据库表,要求:有三个字段,c1,c2字符类型,c3,c4是整型,c5是日期类型,c2不能为空,c1 是主键

  create table tableName(

  c1 varchar(20) PRIMARY KEY,

  c2varchar(20) NOT NULL

  c3 int,

  c4 int,

  c5 datetime

 2) 查询满足条件的数据:这个属于很简单的查询操作 ,太简单就不写了!

3、输出字符串中第一个只出现一次的字符,用两种方案。

可以使用不同语言写出各种不一样的方案。时间复杂度有O(N),空间复杂度为O(1)你知道几种方式呢!继续留悬念!嘿嘿

先来一种最简单的吧:

java代码:

public class GetFirstChar {

	public static void main(String[] args) {
		String str="abdsdfsa";
		int length=str.length();
		for(int i=0;i<length;i++)
		{
			char c=str.charAt(i);
			if(str.indexOf(c)==str.lastIndexOf(c))
			{
				System.err.println(c);
				break;
			}
		}
	}
}

来一种稍微复杂点的:

public static void getFirstChar(String str){
		char hash[] = new char[26];
		int length =str.length();
		for(int i=0;i<length;i++){
				hash[str.charAt(i)-'a']++;
		}
		for(int i=0;i<length;i++){
			if(hash[str.charAt(i)-'a']==1){
				System.err.println("hah:::"+str.charAt(i));
				break;
			}
		}
	}

嘿嘿@!

下面奉上一个C/C++的代码

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

int main(int argc, char* argv[])
{
	string s="afasdfc";
	int size=s.size();
	for(int i=0;i<size;i++)
	{
		if(s.find_first_of(s[i])==s.find_last_of(s[i]))
		{
			cout<<"the first char is : "<<s[i]<<endl;
			break;
		}
	}
	return 0;
}

答案差不多了!有异议的请留言哇!

转载自原文链接, 如需删除请联系管理员。

原文链接:程序员笔试题--民生银行,转载请注明来源!

0