佳都新太科技股份有限公司7月招聘面试题54道202071

以下函数 fun 的功能是返回 str 所指字符串中以形参 c 中字符开头的后续字符串的首地址 , 例如 : st r所指字符串为 : Hello! , c 中的字符为 e ,则函数返回字符串 : ello! 的首地址。若 str 所指字符串为空串或不包含 c 中的字符,则函数返回 NULL 。请填空。

char *fun(char *str,char c)

{ int n=0; char *p=str;

if(p!=NULL)

while(p[n]!=c&&p[n]!='\0') n++;

if(p[n]=='\0') return NULL;

return( 【 1 2 】 );

}


正确答案:
(12) 【 12 】 p+n
解析 : n++ 到一定数值 , 就找到所指的字符 , 返回 c 的地址。


如果要替换字符串中与指定正则表达式匹配的子串,可以使用re模块的()函数。

A、replace

B、split

C、sub

D、subn


参考答案:CD


使用re.match函数进行正则表达式匹配时,如果指定的匹配选项中包括re.MULTILINE,则会对每一行开头的若干字符作匹配。()

此题为判断题(对,错)。


正确答案:错误


VLOOKUP函数采用TRUE近似匹配模式时,如果未查找到完全匹配的记录,将返回信息表中匹配的最大值,使用前应将信息表按首列从小到大升序排列。()

此题为判断题(对,错)。


答案:正确


下列哪些操作需要进行相应的排序操作()

A.使用VLOOKUP函数近似匹配模式进行查找

B.分类汇总

C.插入数据透视表

D.使用VLOOKUP函数精确匹配模式进行查找


答案:AB


佳都新太科技股份有限公司7月招聘面试题面试题面试官常问到的一些题目整理如下:问题 Q1:用Python匹配HTML tag的时候,和有什么区别?可用的回答 :术语叫贪婪匹配( )和非贪婪匹配( )问题 Q2:什么是正则的贪婪匹配?可用的回答 : 如: str=abcaxc; p=ab.*c; 贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。 如上面使用模式p匹配字符串 str,结果就是匹配到:abcaxc(ab.*c)。 非贪婪匹配:就是匹配到结果就好,就少的匹配字符。 如上面使用模式p匹配字符串str,结果就是匹配 到:abc(ab.*c) 问题 Q3:装饰器的作用和功能?可用的回答 : 1. 引入日志 2. 函数执行时间统计 3. 执行函数前预备处理 4. 执行函数后的清理功能 5. 权限校验等场景 6. 缓存 问题 Q4:Python中的lambda是什么?可用的回答 :它是一个单独的表达式匿名函数,通常用作内联函数。问题 Q5:描述数组、链表、队列、堆栈的区别?可用的回答 : 数组与链表是数据存储方式的概念,数组在连续的空间中存储数据,而链表可以在非连续的空间中存储数据; 队列和堆栈是描述数据存取方式的概念,队列是先进先出,而堆栈是后进先出; 队列和堆栈可以用数组来实现,也可以用链表实现。 问题 Q6:什么是Python pass?可用的回答 :pass意味着,无操作的Python语句,或者换句话说,它是复合语句中的占位符,其中应该留有空白,并且不必在那里写入任何内容。问题 Q7:迭代器和生成器的区别?可用的回答 : 1)迭代器是一个更抽象的概念,任何对象,如果它的类有next方法和iter方法返回自己本身。对于 string、list、dict、tuple等这类容器对象,使用for循环遍历是很方便的。在后台for语句对容器对象调 用iter()函数,iter()是python的内置函数。iter()会返回一个定义了next()方法的迭代器对象,它在容器中 逐个访问容器内元素,next()也是python的内置函数。在没有后续元素时,next()会抛出一个 StopIteration异常 2)生成器(Generator)是创建迭代器的简单而强大的工具。它们写起来就像是正规的函数,只是在需 要返回数据的时候使用yield语句。每次next()被调用时,生成器会返回它脱离的位置(它记忆语句最后 一次执行的位置和所有的数据值) 区别:生成器能做到迭代器能做的所有事,而且因为自动创建了iter()和next()方法,生成器显得特别简洁, 而且生成器也是高效的,使用生成器表达式取代列表解析可以同时节省内存。除了创建和保存程序状态 的自动方法,当发生器终结时,还会自动抛出StopIteration异常 问题 Q8:如何将数字转换为字符串?可用的回答 :要将数字转换为字符串,请使用内置函数str()。如果需要八进制或十六进制表示,请使用内置函数oct()或hex()问题 Q9:urllib 和 urllib2 的区别?可用的回答 : urllib 和urllib2都是接受URL请求的相关模块, 但是urllib2可以接受一个Request类的实例来设置URL请求的headers, urllib仅可以接受URL。urllib不可以伪装你的User-Agent字符串。 urllib提供urlencode()方法用来GET查询字符串的产生,而urllib2没有。 这是为何urllib常和urllib2一起使用的原因。 问题 Q10:什么是_init_?可用的回答 :_init_是Python中的方法或者结构。在创建类的新对象/实例时,将自动调用此方法来分配内存。所有类都有_init_方法。算法题面试官常问到的一些算法题目整理如下(大概率会机考):算题题 A1:使用栈模拟队列题目描述如下:可做参考的解答如下:class Queue: def _init_(self): self.stack_one = Stack() self.stack_two = Stack() def push(self, value): if self.stack_two.empty(): self.stack_two.push(value) else: self.stack_one.push(value) def pop(self): pop_result = self.stack_two.pop() if self.stack_two.empty(): while 1: if self.stack_one.empty(): break self.stack_two.push(self.stack_one.pop() return pop_result def peek(self): return self.stack_two.get_top()queue = Queue()queue.push(1)queue.push(2)queue.push(3)print(queue.pop()queue.push(4)print(queue.pop()print(queue.pop()print(queue.pop()算题题 A1:最长的回文子字符串题目描述如下:Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.Example 1:Input: babadOutput: babNote: aba is also a valid answer.Example 2:Input: cbbdOutput: bb最长的回文子串。1. 本来想用正则的,发现正则不重复搜。sorted(re.findall(r(?P.1).*(?P=letter), abacab), key=lambda x: len(x0)unpassed, wrong answer.2. 回文串的定义是,翻转过来也相同,也就是从中间分开,从各自的中间开始走,到各自的头相同就对了。思路

请编写一个函数int pattern_index(char substr[],char str[]),该函数执行含通配符“?”的字符串的查找时,该通配符可以与任一个字符匹配成功。当子串substr在str中匹配查找成功时,返回子串substr在str中的位置,否则返回值为0。要求使用 for循环实现。输出结果如下:

子串起始位置:5

注意:部分源程序已存在文件test20_2.cpp中。

请勿修改主函数main和其他函数中的任何内容,仅在函数pattern_index的花括号中填写若干语句。

文件test20_2.cpp的内容如下:

include<iostream.h>

int pattern_index(char substr[],char str[])

{

}

void main ( )

{

char *substring,*string;

int same;

substring="???gram";

string="this program return index of substring";

same=pattern_index(substring, string);

if(same)

cout<<"子串起始位置: "<<same<<end1;

else

cout<<"匹配不成功" <<end1;

}


正确答案:int pattern_index(char substr[]char str[]) { int ijk; for(i=0;str[i];i++) for(j=ik=0;(str[j]==substr[k])||(substr[k]=='?');j++k++) if(!substr[k+1]) return(i); return(0); }
int pattern_index(char substr[],char str[]) { int i,j,k; for(i=0;str[i];i++) for(j=i,k=0;(str[j]==substr[k])||(substr[k]=='?');j++,k++) if(!substr[k+1]) return(i); return(0); } 解析:本题主要考查的是考生使用for循环和一维数组的综合能力。对于复杂查找,往往使用for的多重循环,注意里层for循环用来查找字符串的使用


设目标为t=“abcaabbabcabaacbacba”,模式为p=“abcabaa” ① 计算模式p的naxtval函数值; ② 不写出算法,只画出利用KMP算法进行模式匹配时每一趟的匹配过程。


参考答案:
  ① p的nextval函数值为0110132。(p的next函数值为0111232)。
  ② 利用KMP(改进的nextval)算法,每趟匹配过程如下:
  第一趟匹配: abcaabbabcabaacbacba
  abcab(i=5,j=5)
  第二趟匹配: abcaabbabcabaacbacba
  abc(i=7,j=3)
  第三趟匹配: abcaabbabcabaacbacba
  a(i=7,j=1)
  第四趟匹配: abcaabbabcabaac bacba
  (成功) abcabaa(i=15,j=8)


请补充函数fun(),该函数的功能是:从‘a’到‘z’统计一个字符串中所有字母字符各自出现的次数,结果保存在数组aIf中。注意:不区分大小写,不能使用字符串库函数。

例如,输入: “A=abc+5*c”,结果为:a=2, b=l,c=2。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数run的横线上填入所编写的若干表达式或语句。

试题程序:

include<conio.h>

include<stdio.h>

define N 100

void fun(char *tt,int alf[])

{

int i

char *p=tt;

for(i=0;i<26;i++)

【 】;

while(*p)

{

if(*p>='A'&&*p<='z')

【 】;

if(*p>='a'&&*p<='Z')

alf[*p-'a']++;

【 】;

}

}

main()

{

char str[N];

char a='a';

int alf[26],k;

clrscr();

printf("\nPlease enter a char string:");

scanf("%S",str);

printf("\n**The original string**\n");

puts(str);

fun(str,alf);

printf("\n**The number of letter**\n");

for(k:0;k<26;k++)

{

if(k%5==0)

printf(“\n”);

printf(“%c=%d”,a+k,alf[k]);

}

printf(“\n”);

}


正确答案:alf[i]=0 *p+=32 p++
alf[i]=0 *p+=32 p++ 解析:第一空:数组alf[26]用来存放字母字符出现的次数,在使用之前需要清零。第二空:题目要求不区分大小写,所以可以先将所有的大写字母都转换为对应的小写字母,然后一并记录出现的次数。将大写字母转换为对应的小写字母,只需将ASCII码加上32就可以了。第三空:指针p指向字符串tt,通过p自加1来移动指针,访问字符串中的所有字符。


vlookup函数的第二参数第一列要求升序排序,且近似匹配的结果为“向下近似匹配”。()

此题为判断题(对,错)。


答案:正确


以下函数fun的功能是返回str所指字符串中以形参c中字符开头的后续字符串的首地址,例如,str所指字符串为Hello!,c中的字符为e,则函数返回字符串ello!的首地址。若str所指字符串为空或不包含c中的字符,则函数返回NULL,请填空。char *fun(char *str,char c){ int n=0; char *p=str; if(p!=NULL) while(p[n]!=c&&p[n]!=’\0’) n++; if(p[n]==’\0’) return NULL; return();}


正确答案:p+n
在本题中,函数fun的功能是返回str所指字符串中以形参c中字符开头的后续字符串的首地址。
在本题的程序中,fun函数带有两个形参,其中一个是指针str,它指向字符串的首地址,另一个是字符变量c。程序首先定义了一个整型变量n,从程序中可知,它是字符串str中参数c相对于首地址的偏移量,然后定义了一个指针变量p,指向字符串str的首地址,然后执行条件语句,如果字符串不为空,则执行循环语句,循环结束的条件是要么字符串结束,要么找到形参c中对应的字符。根据循环结束的条件我们可以判断,其非死循环,循环结束后,从程序中可以看出,判断循环结束的原因是否因为字符串结束而结束的,如果是,说明没找到形参c中对应的字符,返回NULL。
如果不是,则说明是因为找到了形参c中对应的字符而结束循环的。根据题目要求,需要返回以形参c中字符开头的后续字符串的首地址,而这时以形参c中字符开头的后续字符串的首地址为p+n。

更多 “佳都新太科技股份有限公司7月招聘面试题54道202071” 相关考题
考题 下列给定程序中,函数proc()的功能是:将字符串str中的所有字符复制到字符串b中,要求在每复制3个字符之后插入1个空格。例如,在调用proc()函数之前给字符串str输入abcdefghijk,调用函数之后,字符串b中的内容则为abc def ghijk。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:正确答案:

考题 ●在KMP模式匹配算法中,需要求解模式串p的next函数值,其定义如下(其中,j为模式串中字符的序号)。对于模式串“abaabaca”,其next函数值序列为(57)。(57)A. 01111111B.01122341C.01234567D.01122334正确答案:B

考题 病例对照研究中,( )效率最高A.1:5匹配B.1:3匹配C.1:2匹配D.1:4匹配E.1:1匹配正确答案:D

考题 阅读以下说明和 C 函数,填补函数代码中的空缺,将解答填入答题纸的对应栏内。 【说明 1】 函数 f(double eps) 的功能是:利用公式计算并返回 π 的近似值。【说明 2】 函数fun(char *str)的功能是:自左至右顺序取出非空字符串 str中的数字字符,形成一个十进制整数(最多 8 位)。例如,若 str中的字符串为 "iyt?67kp f3g8d5.j4ia2e3p12", 则函数返回值为 67385423。正确答案:(1)n+2(2)-s 或-1*s(3) *p!= \ 0或等价形式(4) num*10 或等价形式(5) p++或等价形式

考题 列举一些需要进行字符串模式匹配的应用场景。正确答案:例如,在文本编辑中经常要查找某一特定单词或者一段话在整篇文章中出现的位置,按照姓名查找某个学生、员工、居民。有效的模式匹配能极大地提高文本编辑程序的能力。

考题 病例对照研究中,下列哪种匹配效率最高()A、1:1匹配B、1:2匹配C、1:3匹配D、1:4匹配E、1:5匹配正确答案:D

考题 单选题该研究采用(  )。A 不匹配设计B 1:1匹配设计C 1:5匹配设计D 1:4匹配设计E 成组匹配设计正确答案:D解析:暂无解析

考题 在字符串的KMP模式匹配算法中,需先求解模式串的next函数值,其定义如下式所示,j表示模式串中字符的序号(从1开始)。若模式串p为"abaac",则其next函数值为 ( ) 。 A.01234 B.01122 C.01211 D.01111 答案:B解析:根据公式依次推导即可。

考题 在字符串的KMP模式匹配算法中,需先求解模式串的next函数值,其定义如下式所示,j表示模式串中字符的序号(从1开始)。若模式串p为"abaac",则其next函数值为(60)。A.01234 B.01122 C.01211 D.01111答案:B解析:根据公式依次推导即可。

考题 请补充fun()函数,该函数的功能是:把字符的ASCII码中为奇数的字符从字符串str中删除,结果仍然保存在字符串str中,字符串str从键盘输人,其长度作为参数传人fun()函数。例如,输入“abcdef”,则输出“bdf”。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在mare()函数的横线上填入所编写的若干表达式或语句。试题程序:正确答案:【解析】先判断ASCⅡ码的奇偶。 第一空:根据主函数“fun(str,len);”调用语句,其中len为字符串str的长度,用来控制循环。根据主函数中对应的调用语句,补全fun()函数定义,第一空填“fun(chars[],intn)”。 第二空:“s[j++]=s[i];”语句中j的变量在使用前要对其取值进行初始化,因为数组下标是由0开始的,初始化值为0,所以第二空填“j-0”。 第三空:新生成的字符串要加尾符标志,所以第三空填“s[j]=ˊ\0ˊ”。