借条范本

[凤凰网校招笔试] 浦发银行校招笔试

篇一:2015校招笔试

日志

2014各大网络公司校招笔试算法题

腾讯

1、请设计一个排队系统,能够让每个进入队伍的用户都能看到自己在 中所处的位置和变化

。队伍可能随时有人加入和退出,当有人退出影响到用户的位置排名时需要即时反馈到用户。

2、A、B两个整数集合,设计一个算法求他们的交集,尽可能的高效。

百度

1.使用C/C++编写函数,实现字符串反转,要求不使用任何系统函数,且时间复杂度最小,函数原型:char* reverse_str(char* str)。

2. 给定一个如下格式的字符串(1,(2,3),(4,(5,6),7))括号内的元素可以是数字,也可以是另一个括号,请实现一个算法消除嵌套的括号,比如把上面的表达式变成:(1,2,3,4,5,6,7),如果表达式有误请报错。

3. 分别实现二叉查找数root中两个节点的最近相连的双亲节点:递归,非递归函数。

4.给出任意一个正整数,算出大于它的最小不重复数(即不存在相邻两个数相同的情况)

5.给出一个长度为N的字符串,求里面最长的回文子串长度。

6. 一幢大楼的底层有1001根电线,这些电线一直延伸到大楼楼顶,你需要确定底层的1001个线头和楼顶的1001次线头的对应关系。你有一个电池,一个灯泡,和许多很短的电线,你需要上下楼几次才能确定电线接头的对应关系.

解答:

注明:这里每次上下楼都带着电池和灯泡,以及每次接口连接,对应接口的之前连接过的线都将拆除,所以下面不再说明。 首先将底层一对接口(这里假设为(buttom1,buttom2))连接起来,然后上楼,根据提供的电池和灯泡的亮灭,确定顶层的一对(这里假设为(top1,top2)),接着将顶层的另一对连接起来(假设为(top3,top4)),然后下底层,确定和(top3,top4)对应的一对(假设为(buttom3,buttom4)),然后将底层的 buttom1和buttom3连接,底层的buttom2和buttom4连接,上楼,分别将确定过的两对交换对接,即依次测试(top1,top4),(top2,top3)或者(top1,top3),(top2,top4),直接灯泡亮为止即可确定这四个接口的对接关系。这样第一次确定4个接口需要上下楼3次。

然后根据第一次确定的4个接口,在顶层分别和剩余的接口中的其中四个接口连接,下到底层,和第一次确定四个接口一样,即可确定8个接口。这时确定8根只需要在上面的基础上加1次就可以。接下来就可以确定16个接口,并以此指数增加,从而到2的10次方,即1024,即可全部确定1001个接口,而从2的3次方到2的10次方,共8次.

最后得出第一次确定的3次加上接下来的8次,共需11次即可确定他们的对应关系。

科大讯飞

1.求一个整数数组的最大元素,用递归方法实现。

#include <cmath> using namespace std; int maxnum(int a[], int n) { if(n == 1) return a[0]; if(n>1) { return max(a[0], maxnum(a+1,n-1)); } } intmain() { int num[10] =

{0,1,2,3,4,5,6,7,8,9}; cout<<maxnum(num,10)<<endl;return 0; }

2. 已知一个整数数组A[n],写出算法实现将奇数元素放在数组的左边,将偶数放在数组的右边。要求时间复杂度为O(n)。 void partition(int A[], int n) { int x; int i = 0; int j = n-1; while(i != j) { while( a[i]%2 == 1) i++; while (a[j]%2 == 0) j++; if(i < j) { x = a[i]; a[i] = a[j]; a[j] =x; } } }

金山办公

1.[长沙理工站] 给定 一个int型的整数,编程输出其LED显示屏形式。如0为:

---

| |

| |

| |

---

每个数字之间用空格分开。

2.[湖南大学站]有一个函数:

void unique(std::vector<int>&v);

用来给数组去重,试写一段测试代码检查其正确性。

提示1:尽可能找出bug

提示2:你的代码应该返回int型,0表示测试通过,1表示出错。

3.有如下函数原型:

void transferToChinese(int num);(ps:函数名记不太清了,但是无关紧要)

该函数把小于一亿的int型数字转换成中文表示,如:

17:一十七;

110:一百一十;

12345:一万两千三百四十五;

10101:一万零一百零一

提示:注意零的情况。

拓展:考虑缩写情况,如:

17:十七

美团网

1. 链表翻转。给出一个链表和一个数k,比如链表1→2→3→4→5→6,k=2,则翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6,用程序实现。

#include <iostream> using namespace std; struct ListNode { int m_nValue; ListNode *m_pNext; }; ListNode* CreateList(int val) { ListNode *pHead = new ListNode; pHead->m_nValue = val; pHead->m_pNext =

NULL; returnpHead; } void InsertNode(ListNode **pHead, int val) { ListNode *pNode = new ListNode;

pNode->m_nValue = val; pNode->m_pNext = NULL; while((*pHead)->m_pNext != NULL) { (*pHead) = (*pHead)->m_pNext; } (*pHead)->m_pNext = pNode; (*pHead) = pNode; } void PrintList(ListNode*pHead) { while (pHead != NULL) { cout<<pHead->m_nValue<<" "; pHead = pHead->m_pNext; } cout<<endl; } ListNode* Reverse(ListNode *pHead)

{if (pHead == NULL || pHead->m_pNext == NULL) { return pHead; } ListNode *pPre = NULL; ListNode *pCurrent = pHead; ListNode *pPost = pHead->m_pNext; while (pCurrent->m_pNext != NULL) { pCurrent->m_pNext = pPre; pPre = pCurrent; pCurrent = pPost; pPost = pPost->m_pNext; } pCurrent->m_pNext = pPre; return pCurrent; } ListNode* ReverseList(ListNode *pHead, int k) { if (pHead==NULL || pHead->m_pNext==NULL) { return pHead; }

ListNode *pPre = NULL; ListNode*pCurrent = pHead; ListNode *pPost = pHead->m_pNext; ListNode *pStart= NULL; ListNode *pEnd = NULL; int n = 0; pEnd = pCurrent; pEnd->m_pNext = NULL; while (pPost != NULL) { ++n; if (n == (k+1)) { pStart = pPre; pEnd->m_pNext = ReverseList(pCurrent, k); return pStart; } else { pCurrent->m_pNext = pPre; pPre = pCurrent; pCurrent = pPost; pPost = pPost->m_pNext; } } pCurrent->m_pNext = pPre; pStart =

Reverse(pCurrent); return pStart; } int main() { ListNode *pHead = NULL; ListNode *head = NULL; int n; cout<<"输入链表中节点的个数 n:"<<endl; cin>>n; cout<<"请输入n个整数值:"<<endl; for (int i=0; i<n; ++i) { intdata; cin>>data; if (pHead == NULL) { pHead = CreateList(data); head = pHead; } else { InsertNode(&pHead, data); } } int k; cout<<"请输入k:"<<endl; cin>>k; head = ReverseList(head, k);

PrintList(head);system("pause"); return 0; }

2. 一个函数access(),调用频率不能超过R次/sec,用程序实现一个函数,当超过R次/sec时返回access false,不超过时返回success

#define false 0 #define success 1 int getcurrentms() { struct timeval tv;

gettimeofday(&tv,NULL); return tv.tv_sec*1000+tv.tv_usec/1000; //得到毫秒数 } bool count_access()

{ static int count=0; static inttime_ms_old=0,time_ms_now; if(count==0) { time_ms_old=getcurrentms(); } count++; access(); if(count>=R)

{ time_ms_now=getcurrentms();if(time_ms_now-time_ms_pld>=1000) return false; else return success; }return success; }

3. 一个m*n的矩阵,从左到右从上到下都是递增的,给一个数elem,求是否在矩阵中,给出思路和代 码.

解: 思路:从矩阵的右上角开始判断即可,每次可以消除一行或一列,详见剑指offer一书.

去哪儿网

1.写一个函数,转换相对路径为绝对路径,比如:/home/abs/../temp/new/../,输出路径为:/home/temp。

2.一个10*10的矩阵(可以理解为棋盘),随时生成一组数据填入矩阵,任何一个位置的数字除4进行计算,按余数着色,余数为0着色为red,1为blue,2为green,3为black,可以理解为生成4中颜色的棋子放入棋盘,如果存在其中同色五星连珠的情况(规则通五子棋),找出任意一组,输出5个棋子的位置下标值。

3.

有两个文件context.txt和words.conf,请尝试将他们合并成为一段文字,并打印出来。

这两个文件内容如下:

context.txt

“并不是每个人都需要$(qunar)自己的粮食,$(flight.1)每个人都需要做自己穿的$(fight.2),我们说着别人发明的

$(hotel),使用别人发明的数学......我们一直在$(tuan)别人的成果。使用人类的已有经验和知识$(travel.1)来进行,是一件$(travel.2)的事情”

word.conf

flight=也不是:衣服

qunar=种植

hotel=语言

tuan=使用

travel=发明创造:很了不起

4.

一个文件里有10 万 个随机正整数,按照以下规则能组合出一份新的数据:

A. 如果当前数字能被3 整除 ,那么它和文件中所有数字(包括自己)两两相加后生成一组数字替代自己的位置。

B. 如果不能被 3 整除 ,则它只需要乘以二,生成一个数字替代自己的位置。

例如: [3 ,7,6] 会组合出 [ 6,10,9,14,9,13,12]

再如: [5 ,12,9,6,2]会组合出[10,17,24,21,18,14,14,21,18,15,11,11,18,15,12,8,4]

写一个程序找出并打印出新数据的最小的前200 个数字 。请考虑优化算法复杂度。

5. 已知字母序列【d, g, e, c, f, b, o, a】,请实现一个函数针对输入的一组字符串 input[] = {"bed", "dog", "dear", "eye"},按照字母顺序排序并打印。

本例的输出顺序为:dear, dog, eye, bed。

6. 有一万个北京单身男女向你提交了基本资料,包括:姓名、性别、年龄、星座,写一段程序尝试找出他们最匹配的一对。 华为

1.

通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。

比如字符串“abacacde”过滤结果为“abcde”。

要求实现函数: void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);

【输入】 pInputStr: 输入字符串

lInputLen: 输入字符串长度

【输出】 pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;

【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出

示例

输入:“deefd” 输出:“def”

输入:“afafafaf” 输出:“af”

输入:“pppppppp” 输出:“p”

main函数已经隐藏,这里保留给用户的测试入口,在这里测试你的实现函数,可以调用printf打印输出

当前你可以使用其他方法测试,只要保证最终程序能正确执行即可,该函数实现可以任意修改,但是不要改变函数原型。 一定要保证编译运行不受影响

//////////////////////////////////////////////////////////////////////////华为第一题 19:19-19:36 17分钟 #include <iostream> #include

<cassert> usingnamespace std; bool g_flag[26]; void stringFilter(const char *pInputStr,long lInputLen, char *pOutputStr) { assert(pInputStr != NULL); int i = 0; if(pInputStr == NULL || lInputLen <= 1) { return; } const char *p = pInputStr;while(*p != '\0') { if (g_flag[(*p - 'a')])

{ p++; }else{ pOutputStr[i++] = *p; g_flag[*p - 'a'] = 1; p++; } } pOutputStr[i] = '\0'; } int main()

{ memset(g_flag,0,sizeof(g_flag)); char input[] = "abacacde"; char *output =new char[strlen(input) + 1]; stringFilter(input,strlen(input),output); cout<<output<<endl; delete output; return 0; }

2.

通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。

压缩规则:

1、仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc"。

2、压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"。

要求实现函数:

void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr);

【输入】 pInputStr: 输入字符串

lInputLen: 输入字符串长度

【输出】 pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;

【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出

示例

输入:“cccddecc”输出:“3c2de2c”

输入:“adef” 输出:“adef”

输入:“pppppppp” 输出:“8p”

//////////////////////////////////////////////////////////////////////////华为第二题 19:40 - 20:10 中间耽误3分钟 #include <iostream> #include

<cassert>using namespace std; void stringZip(const char *pInputStr, longlInputLen, char *pOutputStr)

{ const char *p = pInputStr; int num = 1; int i = 0; p++; while(*p != NULL) { while(*p == *(p-1)&& *p != NULL) { num++; p++; } if (num > 1) { int size = 0; int temp = num; while(num) //计算位数 { size++; num /= 10; } num = 1; for (int j = size; j > 0; j--) { pOutputStr[i+j-1] = '0'+ temp%10; temp /= 10; } i +=size; pOutputStr[i++] = *(p-1); p++; }else{ pOutputStr[i++] = *(p-1); p++; } } pOutputStr[i] = '\0'; } int main() {char input[] = "cccddecc"; char *output = new char[strlen(input) + 1];

stringZip(input,strlen(input),output); cout<<output<<endl; return 0; }

3. 通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。

输入字符串的格式为:“操作数1 运算符操作数2”,“操作数”与“运算符”之间以一个空格隔开。

补充说明:

1、操作数为正整数,不需要考虑计算结果溢出的情况。

2、若输入算式格式错误,输出结果为“0”。

要求实现函数:

void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr);

【输入】 pInputStr: 输入字符串

lInputLen: 输入字符串长度

【输出】 pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;

【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出

示例

输入:“4 + 7” 输出:“11”

输入:“4 - 7” 输出:“-3”

输入:“9 ++ 7” 输出:“0” 注:格式错误

//////////////////////////////////////////////////////////////////////////华为第三题 20:29 - 20:40 #include <iostream> using namespace std; voidarithmetic(const char *pInputStr, long lInputLen, char *pOutputStr) { constchar *input = pInputStr; char *output = pOutputStr; int sum = 0; intoperator1

= 0; int operator2 = 0; char *temp = new char[5]; char *ope = temp; while(*input != ' ') //获得操作数1 { sum = sum*10 + (*input++ - '0'); } input++; operator1 = sum; sum = 0; while(*input != ' ') { *temp++ = *input++; } input++; *temp = '\0'; if (strlen(ope) > 1 ) { *output++ = '0'; *output

= '\0'; return; } while(*input != '\0') //获得操作数2 { sum = sum*10+ (*input++ - '0'); } operator2 = sum; sum = 0; switch (*ope)

{ case'+':itoa(operator1+operator2,pOutputStr,10); break; case '-':itoa(operator1-operator2,pOutputStr,10); break; default: *output++ = '0'; *output = '\0';return; } } int main() { char input[] = "4 - 7"; char output[] = " "; arithmetic(input,strlen(input),output); cout<<output<<endl; return 0; }

4. 输入1--50个数字,求出最小数和最大数的和

//华为2014年机试题1:输入1--50个数字,求出最小数和最大数的和 //输入以逗号隔开 #include<stdio.h> #define N 50 void sort(int a[],int n); intmain(void) { char str[100]; int a[N]={0}; gets(str); //要点1:动态的输入1--50个整数,不能确定个数,只能用字符串输入,然后分离出

来 int i=0; int j=0; intsign=1; while(str[i]!='\0') { if(str[i]!=',') //输入时要在半角输

入 { if(str[i] == '-')//要点:2:有负整数的输入 { // i++; //易错点1 sign=-1; } else if(str[i]!='\0') //不用else的话,负号也会减去‘0’ { a[j]=a[j]*10 + str[i]-'0'; //要点3:输入的可以是多位数 } }

i++; if(str[i]==',' || str[i]=='\0') //这个判断是在i自加以后 { a[j]=a[j]*sign; //易错点2 sign=1; ////易错点3 j++; //j就是a数组的个数 范围0到j-1 } } sort(a,j); printf("Max number + Min number

= %d",a[0]+a[j-1]);return 0; } void sort(int a[],int n) //选择排

序 { int i,j; int k; int temp;for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) { if(a[k]>a[j])

k=j; } if(i!=k) { temp = a[k]; a[k] = a[i]; a[i] = temp; } } for(i=0;i<n;i++) printf("%-5d",a[i]); puts(""); } 暴风影音

1. 自定义实现字符串转为整数的算法,例如把“123456”转成整数123456.(输入中可能存在符号,和数字)

//返回结果的有效标志 enum Status {VALID,IN_VALID}; int gStatus = VALID;int strToInt(const char* str) { long long result = 0;//保存结果 gStatus = IN_VALID; //每次调用时都初始化为IN_VALID if(str != NULL) { const char* digit = str; bool minus = false; if(*digit == '+') digit++; else if(*digit == '-')

{ digit++; minus = true; } while(*digit != '\0') { if(*digit >= '0' && *digit <='9') { result = result * 10 + (*digit -'0'); //溢出 if(result >std::numeric_limits<int>::max()) { result = 0; break; } digit++; } //非法输入else { result = 0; break; } } if(*digit == '\0') { gStatus = VALID; if(minus) result = 0 - result; } } return static_cast<int>(result); }

2. 给出一棵二叉树的前序和中序遍历,输出后续遍历的结果,假设二叉树中存储的均是ASCII码。如前序:ABDHECFG,中序:HDBEAFCG,则输出后序为:HDECFGCA。

思路:先利用前序和中序构建出二叉树,然后后序遍历输出结果

/** *返回二叉树的根节点 *preOrder:前序遍历序列 *inOrder:中序遍历序列 *len:节点数目 */ Node*

getBinaryTree(char* preOrder, char* inOrder, int len) {if(preOrder == NULL || *preOrder == '\0' || len<=0) return NULL; Node* root = (Node*) malloc(sizeof(Node)); if(root == NULL) exit(EXIT_FAILURE);//前序遍历的第一个节点就是根节点 root->data = *preOrder; int pos = 0;//找到根节点在中序遍历中的位置,其值也代表了左子树的节点数目 while(true) { if(*(inOrder+pos) == root->data) break; pos++; } //通过递归找到左子树和右子树,注意子树的前序中序的下标的计算 if(pos == 0) root->lchild = NULL; else

凤凰网校招笔试

root->lchild = getBinaryTree(preOrder+1, inOrder, pos); if(len-pos-1 == 0) root->rchild = NULL; else root->rchild = getBinaryTree(preOrder+pos+1, inOrder+pos+1,len-pos-1); return root; } /** *后续遍历二叉树 * */ voidpostOrder(Node* root) { if(root == NULL) return; postOrder(root->lchild); postOrder(root->rchild); printf("%c", root->data); } /** *根据前序遍历和中序遍历输出后续遍历 * */ void printPostOrderViaPreOrderAndInorder(char* preOrder, char* inOrder) { Node*

篇二:2015年新京报校招笔试(回忆版)

2015年新京报应届校招笔试

一、填空题50分(没按题号,想到哪写哪)

国家公祭日是 ,抗日战争纪念日是,国家宪法日是。

香港特别行政区特首是 ,澳门特别行政区特首是。 主管计划生育工作的部委是 ,

新京报的总编辑是 。

新京报的微信账号, , 。

马航失联的客机是 ,被击落的客机是 。

日本著名演员 去世,参演过《千里走单骑》。

汤唯与 国导演结婚,周迅的丈夫叫 ,高圆圆与 结婚。 十八届四中全会以 为主题,是第 次以该主题为会议内容。 《小苹果》的演唱者是 。

内蒙古时隔十八年被宣告无罪。

管理金融业务的最高机构是 、 。 导演的,以 的《平凡之路》为主题曲。 奔跑吧兄弟是购买韩国的的版权。

陌陌的创始人是。

小米的创始人是 。

腾讯的副总裁,微信之父是。

世界互联网大会在举行,信息安全委员会主席是 。

十八大以后落马的最高级官员是,曾任职 、 。

《黄金时代》讲述的是著名作家 的故事

二、每道题3分,共12分

1、简述一下你所了解的新京报新媒体,并以一个为例进行评论。

2、许多政府机关都开通了自己的微博、微信和网站,更有宣称的今后发布信息不再通告记者,如果你是该委办局的线口记者,你会怎么处理?

3、国外发生的一起劫持人质事件(具体内容记不清了),如果你是记者你会怎么报道,说一下你的报道思路。

4、本次招聘不限专业,谈你从事采编的优势。

三、写一段关于“地铁早高峰”的文字,文体不限。(10分)

四、每题9分,共18分

1、由于邻居跳广场舞放音响过大影响了自己休息,56岁的施某拿出家中藏匿的双筒猎枪朝天鸣枪,其还放出自己饲养的3只藏獒冲散跳舞人群。 如果你是记者要采访专家,你会怎么问?如果你是专家,你会怎么答?

2、5年前,妻子杜某患上尿毒症,这让下岗已10多年的丈夫廖某生活负担陡然加重。在透析治疗近半年后,廖某找人刻了医院的收费章,在收费单据上盖假章后交给医院,为妻子进行免费透析治疗。4年间,廖某以此方式骗取医院治疗费17万余元。

如果你是记者,你会采取什么态度?

五、10分

近日,在四川省西充县某村,200余位村民用写“联名信”的方式,欲将村里一位患有艾滋病的8岁男童驱离出村。坤坤的爷爷对媒体说,今年12月初,有两名记者找到他,建议通过写“联名信”的方式能达到更好的效果。凤凰网和新京报的报道说,视频拍摄者没有正面回应是谁提出写联名信,但是也表示,“在言语上或许暗示过他爷爷写联名信”,承认在方式上欠妥当,不过完全出于好心,希望坤坤能够引起关注。

根据相关内容写一篇社论,500字。

篇三:人力资源2015年校园招聘笔试试卷

人力资源2015校园招聘笔试试卷

(人力资源专业A卷)

总分:100分考试时间:60分钟

姓名:分数:

一.单项选择题。(15×2分=30分)

1. 工作性质相同,且工作繁简难易程度、责任轻重程度以及所需人员的资格条件高低都十分相近的职位群,构成一个(A):

A.职级 B. 职等 C. 职系D. 职类

2. 当我们使用要素计点法进行岗位评价时,对于复杂的岗位要素可以设定要素等级,这些等级一般情况下不超过

(B ):

A. 4-5 个 B. 5-6 个C. 6-7 个 D. 7-8 个

3. 劳动力供给大于需求时,下列哪项不是管理者应采取的应对措施(A ):

A.工作分享 B.再培训 C.继任计划D.外包

4. 在我们进行招聘工作以前,我们需要首先在组织的内部寻求是否可以通过提拔和培训来解决部分人员需要的问题,体现在招聘原则上就是(D ):

A. 确保质量原则B.双向选择原则 C.公平公正原则 D. 效率优先原则

5. 绩效评估的核心是(D ):

A.界定B.管理C.反馈 D.衡量

6. 下列哪项不是基于员工特性的绩效考核方法(C ):

A.图解式评定量表 B.强制分配法C.360度考核法D.叙述法

7. 目标管理最突出的特点是强调(C)。

A.计划与执行相分离B.过程管理与全面控制 C.成果管理与自我控制 D.自我考评与全面控制

8. 在培训领%

本文来源:http://www.xyyo.net/wenmixiezuo/jietiaofanben/2019/0817/25996.html

推荐访问:凤凰 网校 笔试 凤凰网2019校园招聘 凤凰网校招面试
相关推荐