安德森科技股份有限公司10月招聘面试题127道2020104

下列关于ResultSet接口的说法哪些是正确的?()

A、ResultSet接口被用来提供访问查询结果的数据表,查询结果被当作ResultSet对象而返回。

B、ResultSet对象提供“指针”,指针每次访问数据库表的一行。

C、ResultSet的next()方法用来移动指针到数据表的下一行,如果到达表尾,next()方法返回假的布尔值-false,否则为真。

D、ResultSet接口提供大量的获得数据的方法,这些方法返回数据表中任意位置的数据。

E、以上说法都不对


正确答案:A,B,C,D


●试题三

阅读下列说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

本题给出四个函数,它们的功能分别是:

1.int push(PNODE *top,int e)是进栈函数,形参top是栈顶指针的指针,形参e是入栈元素。

2.int pop(PNODE *top,int *e)是出栈函数,形参top是栈顶指针的指针,形参e作为返回出栈元素使用。

3.int enQueue(PNODE *tail,int e)是入队函数,形参tail是队尾指针的指针,形参e是入队元素。

4.int deQueue(PNODE *tail,int *e)是出队函数,形参tail是队尾指针的指针,形参e作为返回出队元素使用。

以上四个函数中,返回值为0表示操作成功,返回值为-1表示操作失败。

栈是用链表实现的;队是用带有辅助结点(头结点)的单向循环链表实现的。两种链表的结点类型均为:

typedef struct node{

int value;

struct node *next;

}NODE,*PNODE;

【函数1】

int push(PNODE *top,int e)

{

PNODE p=(PNODE)malloc (sizeof(NODE));

if (!p) return-1;

p-> value =e;

(1) ;.

*top=p;

return 0;

}

【函数2】

int pop (PNODE *top,int *e)

{

PNODE p=*top;

if(p==NULL)return-1;

*e=p->value;

(2) ;

free(p);

return 0;

}

【函数3】

int enQueue (PNODE *tail,int e)

{PNODE p,t;

t=*tail;

p=(PNODE)malloc(sizeof(NODE));

if(!p)return-l;

p->value=e;

p->next=t->next;

(3) ;

*tail=p;

return 0;

}

【函数4】

int deQueue(PNODE *tail,int *e)

{PNODE p,q;

if((*tail)->next==*tail)return -1;

p=(*tail)->next;

q=p->next;

*e=q->value;

(4) =q->next;

if(*tail==q) (5) ;

free(q);

return 0;

}


正确答案:

●试题三

【答案】(1)p->next=*top(2)*top=p->next*top=(*top)->next

(3)t->next=p(*tail)->next=p(4)p->next(*tail)->next->next

(5)*tail=p*tail=(*tail)->next

【解析】(1)插入结点p后,p应当指向插入前头结点,所以填入p->next=*top(2)出栈后,头指针应指向它的下一结点,所以填入*top=p->next*top=(*top)->next(3)入队时,需要将结点插入队尾,所以应当填入(*tail)->next=pt->next=p(t也指向尾结点)(4)出队时,需要删除队头结点,通过(*tail)->next可以得到对队头结点的引用。(4)处是正常删除队头结点的情况,空格处应填入头结点指向下一结点的指针,即p->next(*tail)->next->next(5)处是需要考虑的特殊情况,即队列中最后一个元素出队后,要更新队尾指针,即填入*tail=p*tail=(*tail)->next

 


在J2EE中,使用ResultSet对象的next()方法移动光标时,如果超过界限会抛出异常,该异常通常是()。

A.InterruptedException

B.AlreadyBoundException

C.SQLException

D.NetException


参考答案:C


在一个带头结点的单链表HL中,若要在第一个元素之前插入一个由指针p指向的结点,应该使用的语句为()

A.HL=p;p->next=HL;

B.p->next=HL;HL=p;

C.p->next=HL->next;HL->next=p;

D.p->next=HL;p=HL;


正确答案:C


下列的说法中,不正确的是()

A.迭代器协议是指:对象必须提供一个next方法

B.list、dict、str虽然是Iterable,却不是Iterator

C.生成器与迭代器对象的区别在于:它仅提供next()方法

D.生成器实现了迭代器协议,但生成器是边计算边生成达到节省内存及计算资源


正确答案:C


安德森科技股份有限公司10月招聘面试题面试题面试官常问到的一些题目整理如下:问题 Q1:迭代器和生成器的区别?可用的回答 : 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异常 问题 Q2:、isinstance作用以及应用场景?可用的回答 : isinstance(obj, cls) 检查一个obj是否是cls的一个对象 问题 Q3:什么是反射?以及应用场景?可用的回答 : 通过字符串获取对象的方法称之为反射 python中可以通过如下方法实现: 1. getattr 获取属性 2. setattr 设置属性 3. hasattr 属性是否存在 4. delattr 删除属性 问题 Q4:你常用的mysql引擎有哪些?各引擎间有什么区别?可用的回答 : 主要 MyISAM 与 InnoDB 两个引擎,其主要区别如下: 一、 InnoDB 支持事务,MyISAM 不支持,这一点是非常之重要。 事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而 MyISAM就不可以了; 二、 MyISAM 适合查询以及插入为主的应用,InnoDB 适合频繁修改以及涉及到安全性较高的应用; 三、 InnoDB 支持外键,MyISAM 不支持; 四、 MyISAM 是默认引擎,InnoDB 需要指定; 五、 InnoDB 不支持 FULLTEXT 类型的索引; 六、 InnoDB 中不保存表的行数,如 select count(*) from table 时,InnoDB; 需要扫描一遍整个表来计算有多少行,但是 MyISAM 只要简单的读出保存好的行数即可。 注意的是,当 count(*)语句包含 where 条件时 MyISAM 也需要扫描整个表; 七、 对于自增长的字段,InnoDB 中必须包含只有该字段的索引,但是在 MyISAM 表中可以和其他字段一起建立联合索引; 八、 清空整个表时,InnoDB 是一行一行的删除,效率非常慢。MyISAM 则会重建表; 九、 InnoDB 支持行锁(某些情况下还是锁整表,如 update table set a=1 where user like %lee% 问题 Q5:Python中的self是什么?可用的回答 :self是类的实例或对象。在Python中,self包含在第一个参数中。init方法中的self变量引用新创建的对象,而在其他方法中,它引用其方法被调用的对象。问题 Q6: Django重定向你是如何实现的?用的什么状态码?可用的回答 : 使用HttpResponseRedirect redirect和reverse 状态码:302,301 问题 Q7:什么是粘包? socket 中造成粘包的原因是什么? 哪些情况会发生粘包现象?可用的回答 : 粘包:在接收数据时,一次性多接收了其它请求发送来的数据(即多包接收)。如: 对方第一次发送hello,第二次发送world,在接收时,应该收两次, 一次是hello,一次是world,但事实上是一次收到helloworld,一次收到空,这种现象叫粘包。 原因: 粘包问题主要还是因为接收方不知道消息之间的界限,不知道一次性提取多少字节的数据所造成的。 什么情况会发生: 1、发送端需要等缓冲区满才发送出去,造成粘包 发送数据时间间隔很短,数据很小,会合到一起,产生粘包 2、接收方不及时接收缓冲区的包,造成多个包接收 客户端发送了一段数据,服务端只收了一小部分, 服务端下次再收的时候还是从缓冲区拿上次遗留的数据,产生粘包 解决方案: 一个思路是发送之前,先打个招呼,告诉对方自己要发送的字节长度, 这样对方可以根据长度判断什么时候终止接受 注意: 只有TCP有粘包现象,UDP永远不会粘包! 问题 Q8:Python里面match()和search()的区别?可用的回答 :re模块中match(pattern,string,flags),检查string的开头是否与pattern匹配。re模块中research(pattern,string,flags),在string搜索pattern的第一个匹配值。问题 Q9:如何在Python中实现多线程?可用的回答 :Python有一个多线程库,但是用多线程来加速代码的效果并不是那么的好,Python有一个名为Global Interpreter Lock(GIL)的结构。GIL确保每次只能执行一个“线程”。一个线程获取GIL执行相关操作,然后将GIL传递到下一个线程。虽然看起来程序被多线程并行执行,但它们实际上只是轮流使用相同的CPU核心。有这些GIL传递都增加了执行的开销。这意味着多线程并不能让程序运行的更快问题 Q10:如果让你来防范网站爬虫,你应该怎么来提高爬取的难度?可用的回答 : 1. 判断headers的User-Agent; 2. 检测同一个IP的访问频率; 3.

Python内置函数__________可以返回列表、元组、字典、集合、字符串以及range对象中元素个数。


正确答案:len()


Python内置函数__________用来返回序列中的最小元素。


正确答案:min()


RDD的flatMap操作是将函数应用于RDD之中的每一个元素,将返回的迭代器数组、列表等中的所有元素构成新的RDD。()

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


正确答案:正确


公司A有一个SQLSERVER2005数据库服务器。你被指派了一个任务是去得到当前已登录数据库的用户的信息。为此,你需要去创建一个返回指定用户活动时长的函数,请问,下面哪两个方法能达到这个目的?()

A.创建一个返回值列表的函数,它返回给定用户的登录时间值

B.创建一个返回值列表的函数,它返回返回超过当前用户登录时长的那些用户的登录小时数

C.创建一个返回指定用户当天登录小时数的函数

D.创建一个返回指定用户当月登录小时数的函数


参考答案:C, D


已知bead指向一个带头结点的单向链表,链表中每个结点包含数据域(data)和指针域(next),数据域为整型。以下函数求出链表中所有连接点数据域的和值作为函数值返回。请在横线处填入正确内容。

{ int data; struct link *next;}

main()

{ struct link *head;

sam(______);

{stmct link *p;int s=0;

p=head->next;

while(p){s+=p->data;p=p->next;}

return(s);}


正确答案:

更多 “安德森科技股份有限公司10月招聘面试题127道2020104” 相关考题
考题 在J2EE中,使用ResultSet对象的next()方法移动光标时,如果超过界限,会抛出 异常,该异常通常是()。 A、InterruptedExceptionB、AlreadyBoundExceptionC、SQLExceptionD、NetException正确答案:C

考题 使用Function语句定义一个函数过程时,其返回值的类型( )。【考点2创建模块】 A.只能是符号常量S使用Function语句定义一个函数过程时,其返回值的类型( )。【考点2创建模块】A.只能是符号常量B.是除数组之外的简单数据类型C.可在调用时由运行过程决定D.由函数定义时As子句声明正确答案:D暂无解析,请参考用户分享笔记

考题 阅读以下说明和C语言函数,将应填入(n)。【说明】已知包含头结点(不存储元素)的单链表的元素已经按照非递减方式排序,函数 compress(NODE*head)的功能是去掉其中重复的元素,使得链表中的元素互不相同。处理过程中,当元素重复出现时,保留元素第一次出现所在的结点。图2-1(a)、(b)是经函数compress()处理前后的链表结构示例图。链表的结点类型定义如下:typedef struct Node{int data;struct Node *next;}NODE;【C语言函数】void compress(NODE *head){ NODE *ptr,*q;ptr= (1); /*取得第一个元素结点的指针*/while( (2)&& ptr->next) {q=ptr->next;while(q&&(3)) { /*处理重复元素*/(4)q->next;free(q);q=ptr->next;}(5) ptr->next;}/*end of while */}/*end of compress*/正确答案:(1)head->next(2)ptr(3)q->data == ptr->data或ptr->next->data==ptr->data或其等价表示(4)ptr->next(5)ptr(1)head->next(2)ptr(3)q->data == ptr->data或ptr->next->data==ptr->data,或其等价表示(4)ptr->next(5)ptr 解析:本题考查基本程序设计能力。 链表上的查找、插入和删除运算是常见的考点。本题要求去掉链表中的重复元素,使得链表中的元素互不相同,显然是对链表进行查找和删除操作。 对于元素已经按照非递减方式排序的单链表,删除其中重复的元素,可以采用两种思路。 1.顺序地遍历链表,对于逻辑上相邻的两个元素,比较它们是否相同,若相同,则删除后一个元素的结点,直到表尾。代码如下: ptr=head->next;/*取得第一个元素结点的指针*/ while(ptr && ptr->next){ /*指针ptr指示出重复序列的第一个元素结点*/ q=ptr->next; while(q && ptr->data==q->data){/*处理重复元素*/ ptr->next=q->next;/*将结点从链表中删除*/ free(q); q=ptr->next; /*继续扫描后继元素*/ } ptr=ptr->next; } 2.对于每一组重复元素,先找到其中的第一个结点,然后向后查找,直到出现一个相异元素时为止,此时保留重复元素的第一个结点,其余结点则从链表中删除。 ptr=head->next;/*取得第一个元素结点的指针*/while(ptr && ptr->next){/*指针ptr指示出重复序列的第一个元素结点*/ q=ptr->next; while(q && ptr->data==q->data) /*查找重复元素*/ q=q->next; s=ptr->next; /*需要删除的第一个结点*/ ptr->next=q; /*保留重复序列的第一个结点,将其余结点从链表中删除*/ while(s && s!=q}{/*逐个释放被删除结点的空间*/ t = s->next;free(s);s = t;}ptr=ptr->next; } 题目中采用的是第一种思路。

考题 填空题Python内置函数()用来返回序列中的最小元素。正确答案:min()解析:暂无解析

考题 Python内置函数()用来返回序列中的最大元素。正确答案:max()

考题 阅读下列说明和C代码,将应填入(n)处的字句写在对应栏内。【说明】本题给出四个函数,它们的功能分别是:1.int push(PNODE*top,int e)是进栈函数,形参top是栈顶指针的指针,形参e是入栈元素。2.int pop(PNODE*top,int*e)是出栈函数,形参top是栈顶指针的指针,形参e作为返回出栈元素使用。3.int enQueue(PNODE*tail,int e)是入队函数,形参tail是队尾指针的指针,形参e是入队元素。4.int deQueue(PNODE*tail,int*e)是出队函数,形参tail是队尾指针的指针,形参e作为返回出队元素使用。以上四个函数中,返回值为。表示操作成功,返回值为-1表示操作失败。栈是用链表实现的;队是用带有辅助结点(头结点)的单向循环链表实现的。两种链表的结点类型均为:typedef struct node {int value;struct node * next;} NODE, * PNODE;【函数1】int push(PNOOE * top,int e){PNODE p = (PNODE) malloc (sizeof (NODE));if (! p) return-1;p->value=e;(1);*top=p;return 0;}【函数2】int pop (PNODE * top,int * e){PNODE p = * top;if(p == NULL) return-1;* e = p->value;(2);free(p);return 0;}【函数3】int enQueue (PNODE * tail,int e){ PNODE p,t;t= *tail;p = (PNODE) malloc(sizeof(NODE));if(!p) return-1;p->value=e;p->next=t->next;(3);* tail = p;return 0;}【函数4】int deQueue(PNODE * tail,int * e){ PNODE p,q;if(( * tail)->next == * tail) return-1;p= (* tail)->next;q = p ->next;* e =q ->value;(4)=q->next;if(,tail==q) (5);free(q);return 0;}正确答案:(1)p->next=*top  (2)*top=p->next或* top=(*top)->next(3)t->next=p或(*tail)->next=p(4)p->next或(*tail)->next->next(5)*tail=p或*tail=(*tail)->next(1)p->next=*top  (2)*top=p->next或* top=(*top)->next(3)t->next=p或(*tail)->next=p(4)p->next或(*tail)->next->next(5)*tail=p或*tail=(*tail)->next 解析:(1)插入结点p后,p应当指向插入前头结点,所以填入p ->next=*top。(2)出栈后,头指针应指向它的下一结点,所以填入 *top=p->next或*top=(*top)->next。(3)入队时,需要将结点插入队尾,所以应当填入(*tail)->next=p或t->next=p(t也指向尾结点)。(4)出队时,需要删除队头结点,通过(*tail)->next可以得到对队头结点的引用。(4)处是正常删除队头结点的情况,空格处应填入头结点指向下一结点的指针,即p->next或(*tail)->next->next。(5)处是需要考虑的特殊情况,即队列中最后一个元素出队后,要更新队尾指针,即填入*tail=p或*tail=(*tail)->next。

考题 填空题Python内置函数()用来返回序列中的最大元素。正确答案:max()解析:暂无解析

考题 在一个被调用函数中,关于return语句使用描述,( )是正确的。A.函数返回值的类型是在定义函数时确定,在函数调用时是可能改变的B.函数返回值的类型就是返回值表达式的值C.函数返回值的类型决定了返回值表达式的类型D.函数返回值的类型可以与返回值表达式的类型不一致正确答案:C解析:函数返回值的类型决定了返回值表达式的类型。

考题 在python中,定义一个函数,那么函数名.__doc__的作用是()A、返回指定函数的文档字符串B、返回函数名字C、返回函数定义所在模块的名字D、没有这种用法正确答案:A

考题 关于函数的返回值,以下描述中错误的是() A、如果函数定义中有返回值,那么函数中就必须保证任何情况下都能通过return语句返回一个值,否则编译时会出错B、一个函数中只能有一条return语句,而且它必须位于函数的最后一行C、如果函数定义中没有返回值,那么这个函数就不能用return语句返回D、如果函数定义中有返回值,那么这个函数就必须通过return语句返回一个值E、函数通过return语句返回值正确答案:B,C