sokaoti.com
京东数字科技控股股份有限公司12月招聘面试题182道20201221

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

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


正确答案:错误


请编写一个函数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循环用来查找字符串的使用


在Shell变量引用操作符可实现模式匹配替换其中()用来的含义是若pattern匹配变量stra的头部,则删除最长匹配部分并返回剩余部分。

A.${strapattern}

B.${strapattern}

C.${stra%pattern}

D.${stra%%pattern}


正确答案:B


正则表达式模块re的match()方法是从字符串的开始匹配特定模式,而search()方法是在整个字符串中寻找模式,这两个方法如果匹配成功则返回match对象,匹配失败则返回空值None。

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


正确答案:√


以下程序中函数scmp功能是返回形参指针s1和s2所指字符串中较小字符串的首地址。#includ<string. h>char *scmp(char *s1,char *s2){ if(strcmp(s1,s2)<0) return(s1); else return(s2);}main(){ int i;char string[20],str[3][20]; for(i=0;i<3;i++) gets(str[i]); strcpy(string,scmp(str[0],str[1])); //库函数 strcpy 对字符串进行复制 strcpy(string,scmp(stfing,str[2])); puts(string); }若运行时依次输入: abed、abba 和abc三个字符串,则输出结果为( )。

A.abed

B.abba

C.abc

D.abca


正确答案:B


京东数字科技控股股份有限公司12月招聘面试题面试题面试官常问到的一些题目整理如下:问题 Q1:什么是正则的贪婪匹配?可用的回答 : 如: str=abcaxc; p=ab.*c; 贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。 如上面使用模式p匹配字符串 str,结果就是匹配到:abcaxc(ab.*c)。 非贪婪匹配:就是匹配到结果就好,就少的匹配字符。 如上面使用模式p匹配字符串str,结果就是匹配 到:abc(ab.*c) 问题 Q2:Python里面match()和search()的区别?可用的回答 :re模块中match(pattern,string,flags),检查string的开头是否与pattern匹配。re模块中research(pattern,string,flags),在string搜索pattern的第一个匹配值。问题 Q3:简述 yield和yield from关键字?可用的回答 : 1、可迭代对象与迭代器的区别 可迭代对象:指的是具备可迭代的能力,即enumerable. 在Python中指的是可以通过for-in 语句去逐个访问元素的一些对象,比如元组tuple,列表list,字符串string,文件对象file 等。 迭代器:指的是通过另一种方式去一个一个访问可迭代对象中的元素,即enumerator。 在python中指的是给内置函数iter()传递一个可迭代对象作为参数,返回的那个对象就是迭代器,然后通过迭代器的next()方法逐个去访问。 问题 Q4:简述 yield和yield from关键字?可用的回答 : 1、可迭代对象与迭代器的区别 可迭代对象:指的是具备可迭代的能力,即enumerable. 在Python中指的是可以通过for-in 语句去逐个访问元素的一些对象,比如元组tuple,列表list,字符串string,文件对象file 等。 迭代器:指的是通过另一种方式去一个一个访问可迭代对象中的元素,即enumerator。 在python中指的是给内置函数iter()传递一个可迭代对象作为参数,返回的那个对象就是迭代器,然后通过迭代器的next()方法逐个去访问。 问题 Q5:简述 三次握手、四次挥手的流程?可用的回答 : 三次握手: 初始状态:客户端A和服务器B均处于CLOSED状态,然后服务器B创建socket,调用监听接口使得服务器处于LISTEN状态,等待客户端连接。(后续内容用A,B简称代替) 1、A首先向B发起连接,这时TCP头部中的SYN标识位值为1,然后选定一个初始序号seq=x(一般是随机的), 消息发送后,A进入SYN_SENT状态,SYN=1的报文段不能携带数据,但要消耗一个序号。 2、B收到A的连接请求后,同意建立连接,向A发送确认数据,这时TCP头部中的SYN和ACK标识位值均为1,确认序号为ack=x+1, 然后选定自己的初始序号seq=y(一般是随机的),确认消息发送后, B进 入SYN_RCVD状态,与连接消息一样,这条消息也不能携带数据,同时消耗一个序号。 3、A收到B的确认消息后,需要给B回复确认数据,这时TCP头部中的ACK标识位值为1, 确认序号是ack=y+1,自己的序号在连接请求的序号上加1,也就是seq=x+1, 此时A进入ESTABLISHED状态,当B收到A的确认回复后,B也进入ESTABLISHED状态, 至此TCP成功建立连接,A和B之间就可以通过这个连接互相发送数据了。 四次挥手: 初始状态:客户端A和服务器B之间已经建立了TCP连接,并且数据发送完成,打算断开连接, 此时客户端A和服务器B是等价的,双方都可以发送断开请求,下面以客户端A主动发起断开请求为例。(后续内 容用A,B简称代替) 1、A首先向B发送断开连接消息,这时TCP头部中的FIN标识位值为1,序号是seq=m,m为A前面正常发送数据最后一个字节序号加1得到的, 消息发送后A进入FNI_WAIT_1状态,FIN=1的报文段不能携带数据,但要消耗一个序号。 2、B收到A的断开连接请求需要发出确认消息,这时TCP头部中的ACK标识位值为1,确认号为 ack=m+1, 而自己的序号为seq=n,n为B前面正常发送数据最后一个字节序号加1得到的, 然后B进入 CLOSE_WAIT状态,此时就关闭了A到B的连接, A无法再给B发数据,但是B仍然可以给A发数据,同时B端通知上方应用层,处理完成后被动关闭连接。 然后A收到B的确认信息后,就进入了 FIN_WAIT_2状态。 3、B端应用层处理完数据后,通知关闭连接, B向A发送关闭连接的消息,这时TCP头部中的FIN和ACK标识位值均为1, 确认号ack=m+1,自己的序号为seq=k,消息发送后B进入LACK_ACK状态。 4、A收到B的断开连接的消息后,需要发送确认消息, 这是这时TCP头部中的ACK标识位值为1,确认号ack=k+1,序号为m+1(因为A向B发送断开连接的消息时消耗了一个消息号), 然后A进入TIME_WAIT 状态,若等待时间经过2MSL后,没有收到B的重传请求, 则表明B收到了自己的确认,A进入CLOSED状态, B收到A的确认消息后则直接进入CLOSED状态。至此TCP成功断开连接。 问题 Q6:有哪些工具可以帮助查找错误或执行静态分析?可用的回答 : PyChecker是一个静态分析工具,可以检测Python源代码中的错误,并警告错误的风格和复杂性。 Pylint是另一种验证模块是否符合编码标准的工具。 auto-pep8工具也可以进行静态代码检查 问题 Q7:列举面向对象中带双下划线的魔术方法可用的回答 : _doc_ 表示类的描述信息 _module_ 表示当前操作的对象在哪个模块 _class_ 表示当前操作的对象的类是什么 _init_ 构造方法,通过类创建对象时,自动触发执行 _new_负责创

下面代码的运行结果是( )。 public class ConcatTest { public static void main (String[ ] args) { String str1 = "abc"; String str2 = "ABC"; String str3 = str1. coneat(str2); System. out. println(str3); } }

A.abc

B.ABC

C.abcABC

D.ABCabc


正确答案:C
解析:String类的concat方法原型为public String concat (String str),其功能是将指定字符串连到此字符串的末尾。如果参数字符串的长度为0,则返回此String对象。否则,创建一个新的String对象,用来表示由此String对象表示的字符序列和由参数字符串表示的字符序列串联而成的字符序列。所以本题中的结果为str1和str2串联而成的字符序列,即“abcABC”。


本程序的功能是,根据用户输入的文件名,在相应的文件内容中查找匹配给定模式的字符串,并将这些字符串显示出来。模式串为“href="…"”。请填写横线处的内容。

注意:请勿改动main()主方法和其他已有语句内容,仅在横线处填入适当语句。

import java.io.*;

import java.util.regex.*;

import javax.swing.*;

public class Example2_10

{

public static void main(String [] argv)

{

final String patternString =

"href\\s*=\\s*(\"[^\"]*\"|[^\\s>])\\s*;

String fileName ;

try

{

System. out. print ( "请输入html 文件的文件名: ");

InputStreamReader in = new InputStreamReader(System.in);

BufferedReader imput = new BufferedReader(in);

fileName = imput.readLine();

if(fileName.equals(" "))

return;

StringBuffer buffer = new StringBuffer();

File file = new File(fileName);

FileInputStream readfile = new FileInputStream(file);

for(int c = 0; (c = readfile.read()) != -1; )

buffer.append((char)c);

Pattern pattern = Pattern.compile(

_____________ Pattern.CASE_INSENSITIVE);

Matcher matcher =________;

while (marcher. find ())

{

int start = matcher.start();

int end = matcher.end();

String match = buffer.substring(start, end);

System.out.println (match);

}

}

catch (Exception excption)

{

System. out.println (excption. getMessage ());

}

System.exit(O);

}

}


正确答案:patternString pattern.matcher(buffer)
patternString pattern.matcher(buffer) 解析:本题考查知识点:输入输出流和正则表达式解题思路:程序首先使用InputStreamReader的实例“in”从标准输入中获取用户输入的文件名,并将结果存放在“fileName”字符串中。if语句用来判断用户输入的文件名是否为空,如果为空则退出程序,不做任何处理。然后根据文件名读取相应的文件内容存放在StringBuffer的实例“buffer”中。然后建立起与正则表达式对应的模式对象“pattem”,并与“buffer”帮定,生成一个匹配器“matcher”。最后使用while循环查找到相应的字符串。
Patter的compile方法用来将正则表达式编译成模式对象。compile方法的第一个参数是正则表达式字符串,所以第一个空的答案是“patternString”。
第二个空用来建立一个匹配器。模式对象建立匹配器的方法是matcher(string),其中string是需要做模式匹配的兑现,本题中需要做模式匹配的对象是“buffer”。


阅读下面程序 public class ConcatTest{ public static void main(String[] args) { String strl = "abc"; String str2 = "ABC"; String str3 = str1.concat(str2); System.out.println(str3); } } 程序的运行结果是:

A.abe

B.ABC

C.abcABC

D.ABCabc


正确答案:C
解析:本题考查字符串的使用。String类提供concat(str)方法,该方法将当前字符串对象与指定str字符串相连。题目程序中生成两个字符串变量str1和str2,并为其赋值,然后生成一个字符串变量str3,该字符串变量的值为表达式str1.concat(str2)的结果。表达式str1.concat(str3)是把字符串str1与字符串str2相连,结果为“abcABC”。
因此,程序的运行结果是“abcABC”。本题的正确答案是选项C。


C#中,string str = null 与 string str =””,请尽量用文字说明区别。(要点:说明详细的内存

空间分配)


正确答案:
string str =”” 分配空间 


在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。


正确答案:
答:string str = null 是不给他分配内存空间,而string str =  给它分配长度为空字符串的内存空间。

更多 “京东数字科技控股股份有限公司12月招聘面试题182道20201221” 相关考题
考题 在Shell变量引用操作符可实现模式匹配替换其中()用来的含义是若pattern匹配变量stra的头部,则删除最长匹配部分并返回剩余部分。A、${stra #pattern}B、${stra##pattern }C、${stra%pattern}D、${stra%%pattern}正确答案:B

考题 String对象的哪个方法可以寻找子字符串并返回该子字符串?()A、match()B、indexOf()C、search()D、concat()正确答案:B

考题 正则表达式模块re的match()方法是从字符串的开始匹配特定模式,而search()方法是在整个字符串中寻找模式,这两个方法如果匹配成功则返回match对象,匹配失败则返回空值None。正确答案:正确

考题 单选题在Shell变量引用操作符可实现模式匹配替换其中()用来的含义是若pattern匹配变量stra的头部,则删除最长匹配部分并返回剩余部分。A ${stra #pattern}B ${stra##pattern }C ${stra%pattern}D ${stra%%pattern}正确答案:D解析:暂无解析

考题 判断题假设re模块已成功导入,并且有pattern=re.compile(’^’+’/.’.join([r’/d{1,3}’foriinrange(4)])+’$’),那么表达式pattern.match(’192.168.1.103’)的值为None。A 对B 错正确答案:错解析:暂无解析

考题 假如有字符串str1和字符串str2,下列选项不能利用于比较这两个字符串是否相等的是()。A、string.Compare(str1,str2)B、str1= =str2C、string.Equals(str1,str2)D、string.CompareTo(str1,str2)正确答案:D

考题 假设re模块已成功导入,并且有pattern=re.compile(’^’+’/.’.join([r’/d{1,3}’foriinrange(4)])+’$’),那么表达式pattern.match(’192.168.1.103’)的值为None。正确答案:错误

考题 本题分别比较两个字符串"A"和"a"是否相等,并比较两个字符"A"和"a"是否相等,并输出比较结果。public class javal{public static void main(String[]args){;cl=‘A ‘;c2=‘a‘;String strl=new String("A"),str2=new String("a"):if( )System.Out.println("char"+c1+"equals"+"char"+c2);elseSystem.OUt.println("char"+cl+"doesn‘t equal"+"char"+c2);if( )System.out.println("string"+strl+"equals"+"string"+str2):elseSystem.OUt.println("string"+strl+"doesn‘t e-qual"+"string"+str2); .}}正确答案:第1处:charcl,c2第2处:cl==c2第3处:strl.equals(str2)【解析】第1处声明两个字符型变量cl和c2;第2处表示当cl等于c2时if条件为真;第3处判断strl和str2是否相等,返回值是布尔类型true或false。

考题 String str = new String(“abc”),“abc”在内存中是怎么分配的()。A、堆B、栈C、字符串常量区D、寄存器正确答案:A,C

考题 C#中,新建一字符串变量str,并将字符串"Tom’sLivingRoom"保存到串中,则应该使用下列哪条语句()。A、string str="Tom/’s Living Room";B、string str="Tom’s Living Room";C、string str("Tom’s Living Room");D、string str("Tom"s Living Room");正确答案:A