广州市品高软件股份有限公司2月招聘面试题136道2020213

试题五(共 15分)

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

【说明】

已知类 LinkedList 表示列表类,该类具有四个方法:addElement()、lastElement()、umberOfElement()以及removeLastElement()。四个方法的含义分别为:

void addElement(Object): 在列表尾部添加一个对象;

Object lastElement(): 返回列表尾部对象;

int numberOfElement(): 返回列表中对象个数;

void removeLastElement(): 删除列表尾部的对象。

现需要借助LinkedList来实现一个Stack栈类,C++代码1和C++代码2分别采用继承和组合的方式实现。

【C++代码 1】

class Stack :public LinkedList{

public:

void push(Object o){ addElement(o); }; //压栈

Object peek(){ return (1) ; }; //获取栈顶元素

bool isEmpty(){ //判断栈是否为空

return numberOfElement() == 0;

};

Object pop(){ //弹栈

Object o = lastElement();

(2) ;

return o;

};

};

【C++代码 2】

class Stack {

private:

(3) ;

public:

void push(Object o){ //压栈

list.addElement(o);

};

Object peek(){ //获取栈顶元素

return list. (4) ;

};

bool isEmpty(){ //判断栈是否为空

return list.numberOfElement() == 0;

};

Object pop(){//弹栈

Object o = list.lastElement();

list.removeLastElement();

return o;

};

};

【问题】

若类LinkedList新增加了一个公有的方法removeElement(int index),用于删除列表中第index个元素,则在用继承和组合两种实现栈类Stack的方式中,哪种方式下Stack对象可访问方法removeElement(int index)? (5) (A. 继承 B. 组合)


正确答案:
试题五参考答案
(1)lastElement()            (3分)
(2)removeLastElement()          (3分)
(3)LinkedList list           (3分)
(4)lastElement()            (3分)
(5)A,或继承            (3分)


试题六(共 15分)

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

【说明】

已知类 LinkedList 表示列表类,该类具有四个方法:addElement()、lastElement()、umberOfElement()以及removeLastElement()。四个方法的含义分别为:

void addElement(Object): 在列表尾部添加一个对象;

Object lastElement(): 返回列表尾部对象;

int numberOfElement(): 返回列表中对象个数;

void removeLastElement(): 删除列表尾部的对象。

现需要借助LinkedList来实现一个Stack栈类, Java代码1和Java代码2分别采用继承和组合的方式实现。

【Java代码1】

public class Stack extends LinkedList{

public void push(Object o){ //压栈

addElement(o);

}

public Object peek(){ //获取栈顶元素

return (1) ;

}

public boolean isEmpty(){ //判断栈是否为空

return numberOfElement() == 0;

}

public Object pop(){ //弹栈

Object o = lastElement();

(2) ;

return o;

}

}

【Java代码2】

public class Stack {

private (3) ;

public Stack(){

list = new LinkedList();

}

public void push(Object o){

list.addElement(o);

}

public Object peek(){//获取栈顶元素

return list. (4) ;

}

public boolean isEmpty(){//判断栈是否为空

return list.numberOfElement() == 0;

}

public Object pop(){ //弹栈

Object o = list.lastElement();

list.removeLastElement();

return o;

}

}

【问题】

若类LinkedList新增加了一个公有的方法removeElement(int index),用于删除列表中第index个元素,则在用继承和组合两种实现栈类Stack的方式中,哪种方式下Stack对象可访问方法removeElement(int index)? (5) (A. 继承 B. 组合)


正确答案:

试题六参考答案
(1)lastElement()            (3分)
(2)removeLastElement()          (3分)
(3)LinkedList list           (3分)
(4)lastElement()            (3分)
(5)A,或继承            (3分)

 


请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,此工程包含有一个源程序文件proj2.cpp,其中定义了Stack类和ArrayStack类。 Stack是一个用于表示数据结构“栈”的类,栈中的元素是字符型数据。Stack为抽象类,它只定义了栈的用户接口,如下所示: 公有成员函数 功能 push 入栈:在栈顶位置添加一个元素 pop 退栈:取出并返回栈顶元素 ArrayStack是Stack的派生类,它实现了Stack定义的接口。ArrayStack内部使用动态分配的字符数组作为栈元素的存储空间。数据成员maxSize表示的是栈的最大容量,top用于记录栈顶的位置。成员函数push和pop分别实现具体的入栈和退栈操作。 请在程序中的横线处填写适当的代码,然后删除横线,以实现上述功能。此程序的正确输出结果应为: a,b,C C,b,a 注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//****料found****”。 //proj2.cpp include<iostream> using namespacc std; class Stack{ public: virtual void push(char C)=0; virtual char pop=0; };

class ArrayStack:public Stack{ char*P; int maxSizc; int top; public: ArravStack(int s) { top=0; maxSize=s: //*********found********* P=______; } ~ArrayStack { //*********found********* _______; } void push(char c) } if(top==maxSize){ cerr<<”Overflow! \n”: return; } //*********found********* _______; top++: } char pop { if(top==0){ cerr<<”Underflow!、n”; return‘\0’; } Top--; //*********found********* ______; } }; void f(Stack&sRef) { char ch[]={‘a’,‘b’,‘c’}; cout<<ch[0]<<”,”<<ch[1]<<”,”<<ch[2]<<endl; sRef.push(oh[0]);sRef.push(ch[1]);sRef.push(ch[2]); cout<<sRef.poP<<”,”; cout<<sRef.poP<<”,”; cout<<sRef.poP<<endl; } int main { ArrayStack as(10); f(as): return 0: }


正确答案:

(1)Ilew char[s]
(2)delete[]P
(3)P[top]=e
(4)return P[top]
【考点分析】
本题主要考查的是表示栈的抽象类Stack类及它的派生类ArrayStaek类、纯虚函数和成员函数。栈的节点一般使用指针表示,定义构造函数时要给指针分配空间,使用New语句来完成。~ArrayStack是析构函数,因为前面已经使用new来分配空间了,因此在这里要用delete语句来释放指针。
【解题思路】
(1)主要考查的是ArrayStack类的构造函数,在函数中要为P申请S个char型空间,应使用语句P=flew char[s];。
(2)主要考查析构函数,使用delete语句释放指针,即delete[]P;。
(3)主要考查push函数,top表示栈顶元素下标,添加的数据放到栈顶,因此使用语句P[top]=c;。
(4)主要考查pop函数,输出栈顶数据,top表示栈顶元素下标,因此使用语句return P[top];。


请写出一段Python代码实现删除一个list里面的重复元素。


请用MOV语句实现汇编程序代码中“LEASI,BINTAB”语句的功能。


正确答案:MOV SIOFFSET BINTAB 这是一道要求读者掌握实现相同功能的汇编语句改写的编程题。本题的解答思路如下: ①在汇编程序代码中“LEA SIBINTAB”语句用于实现将数据表BINTAB的首地址送源变址寄存器SI的功能在第1次查询时该地址被定义为数据表的上指针。 ②传送指令MOV可实现CPU内部寄存器之间的数据传送、寄存器与内存之间的数据传送以及将一个立即数送给CPU的内部寄存器或内存单元。 ③由于每个变量具有段属性(SEG)、偏移量属性(OFFSET)和类型属性(TYPE)其中段和偏移量两个属性可构成变量的逻辑地址。由此与“LEA SIBINTAB”语句所实现的功能等价的语句是:“MOV SIOFFSET BINTAB”。
MOV SI,OFFSET BINTAB 这是一道要求读者掌握实现相同功能的汇编语句改写的编程题。本题的解答思路如下: ①在汇编程序代码中“LEA SI,BINTAB”语句用于实现将数据表BINTAB的首地址送源变址寄存器SI的功能,在第1次查询时该地址被定义为数据表的上指针。 ②传送指令MOV可实现CPU内部寄存器之间的数据传送、寄存器与内存之间的数据传送,以及将一个立即数送给CPU的内部寄存器或内存单元。 ③由于每个变量具有段属性(SEG)、偏移量属性(OFFSET)和类型属性(TYPE),其中,段和偏移量两个属性可构成变量的逻辑地址。由此与“LEA SI,BINTAB”语句所实现的功能等价的语句是:“MOV SI,OFFSET BINTAB”。


广州市品高软件股份有限公司2月招聘面试题面试题面试官常问到的一些题目整理如下:问题 Q1:请用代码简答实现stack?可用的回答 : stack的实现代码(使用python内置的list),实现起来是非常的简单,就是list的一些常用操作 class Stack(object): def _init_(self): self.stack = def push(self, value): # 进栈 self.stack.append(value) def pop(self): #出栈 if self.stack: self.stack.pop() else: raise LookupError(stack is empty!) def is_empty(self): # 如果栈为空 return bool(self.stack) def top(self): #取出目前stack中最新的元素 return self.stack-1 问题 Q2:在Python中切片是什么?可用的回答 :从序列类型(如列表,元组,字符串等)中选择一系列项目的机制称为切片。问题 Q3:大数据的文件读取?可用的回答 : 1. 利用生成器generator 2. 迭代器进行迭代遍历:for line in file 问题 Q4:如何在Python中复制对象?可用的回答 :要在Python中复制对象,可以尝试copy.copy() 或 copy.deepcopy() 来处理一般情况。copy.copy()浅拷贝,复制引用;copy.deepcopy()深拷贝,完全独立的对象问题 Q5: Tornado 的核心是什么?可用的回答 : Tornado 的核心是 ioloop 和 iostream 这两个模块, 前者提供了一个高效的 I/O 事件循环,后者则封装了 一个无阻塞的 socket 。 通过向 ioloop 中添加网络 I/O 事件,利用无阻塞的 socket, 再搭配相应的回调函数,便可达到梦寐以求的高效异步执行。 问题 Q6:谈谈你对闭包的理解?可用的回答 : #闭包函数的实例 # outer是外部函数 a和b都是外函数的临时变量 def outer( a ): b = 10 # inner是内函数 def inner(): #在内函数中 用到了外函数的临时变量 print(a+b) # 外函数的返回值是内函数的引用 return inner if _name_ = _main_: # 在这里我们调用外函数传入参数5 #此时外函数两个临时变量 a是5 b是10 ,并创建了内函数,然后把内函数的引用返回存给了demo # 外函数结束的时候发现内部函数将会用到自己的临时变量,这两个临时变量就不会释放, 会绑定给 这个内部函数demo = outer(5) # 我们调用内部函数,看一看内部函数是不是能使用外部函数的临时变量 # demo存了外函数的返回值,也就是inner函数的引用,这里相当于执行inner函数 demo() # 15 demo2 = outer(7)问题 Q7:如何将值添加到python数组?可用的回答 :可以使用append(),extend()和insert(i,x)函数将元素添加到数组中。问题 Q8:如何删除python数组的值?可用的回答 :可以使用pop()或remove()方法删除数组元素。这两个函数之间的区别在于前者返回已删除的值,而后者则不返回。问题 Q9:说说什么是爬虫协议?可用的回答 : Robots协议(也称为爬虫协议、爬虫规则、机器人协议等)也就是robots.txt, 网站通过robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。 Robots协议是网站国际互联网界通行的道德规范,其目的是保护网站数据和敏感信息、确保用户个人信息和隐私不被侵犯。因其不是命令,故需要搜索引擎自觉遵守。 问题 Q10:Python中的docstring是什么?可用的回答 :Python文档字符串称为docstring,它是一种记录Python函数,模块和类的方法。可以通过内置方法_doc_获取算法题面试官常问到的一些算法题目整理如下(大概率会机考):算题题 A1:最末单词的长度题目描述如下:Input: Hello WorldOutput: 5每个单词都会被 分割。所以要做的是从尾向前找第一个空格。当然Python 下用 strip( )分割后取-1是最好写出来的。当然还要确保下尾部开始不能是 ,要找到第一个单词才行。测试用例:https:/ Solution(object): def lengthOfLastWord(self, s): :type s: str :rtype: int if not s: return 0 result = 0 flag = False for i in s:-1: if i = and not flag: continue elif i = and flag: return result else: result += 1


阅读以下说明C++代码,将应填入(n)处的字句写在对应栏内。

[说明]

以下程序的功能是实现堆栈的一些基本操作。堆栈类stack共有三个成员函数:empty判断堆栈是否为空;push进行人栈操作;pop进行出栈操作。

[C++程序]

include "stdafx. h"

include <iostream, h>

eonst int maxsize = 6;

class stack {

float data[ maxsize];

int top;

public:

stuck(void);

~ stack(void);

bool empty(void);

void push(float a);

float pop(void);

};

stack: :stack(void)

{ top =0;

cout < < "stack initialized." < < endl;

}

stack:: ~stack(void) {

cout < <" stack destoryed." < < endl;

bool stack:: empty (void) {

return (1);

void stack: :push(float a)

if(top= =maxsize) {

cout < < "Stack is full!" < < endl;

return;

data[top] =a;

(2);

}

float stack:: pop (void)

{ if((3)){

cout< < "Stack is undcrflow !" < < endl;

return 0;

(4);

return (5);

}

void main( )

{ stack s;

coat < < "now push the data:";

for(inti=l;i< =maxsize;i+ +) {

cout< <i< <" ";

s. push(i);

}

coat < < endl;

cout< < "now pop the data:";

for(i = 1 ;i < = maxsize ;i + + )

cout< <s. pop()< <" ";

}


正确答案:(1)top==0? true:false (2)top++(或者top =top+1)(3)top==0 (4)top--(或者top =top-1) (5)data[top]
(1)top==0? true:false (2)top++(或者top =top+1)(3)top==0 (4)top--(或者top =top-1) (5)data[top] 解析:(1)判断堆栈是否为空的条件是top为0,而且本函数的返回值为布尔类型,故此处应该填写top==0? true:false;
(2)数据入栈后,栈顶指针要向上移动一个单元;
(3)top为0说明堆栈已经空了,此处if语句返回堆栈为空的提示;
(4)先将栈顶指针往下移动一个单元,才可以指向要出栈的数据;
(5)本行代码的功能是返回要出栈的数据。


试题五(共 15分)

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

【说明】

已知类 LinkedList 表示列表类,该类具有四个方法:addElement()、lastElement()、

numberOfElement()以及removeLastElement()。四个方法的含义分别为:

void addElement(Object): 在列表尾部添加一个对象;

Object lastElement(): 返回列表尾部对象;

int numberOfElement(): 返回列表中对象个数;

void removeLastElement(): 删除列表尾部的对象。

现需要借助LinkedList来实现一个Stack栈类,C++代码1和C++代码2分别采用继承和组合的方式实现。

【C++代码 1】

class Stack :public LinkedList{

public:

void push(Object o){ addElement(o); }; //压栈

Object peek(){ return (1) ; }; //获取栈顶元素

bool isEmpty(){ //判断栈是否为空

return numberOfElement() == 0;

};

Object pop(){ //弹栈

Object o = lastElement();

(2) ;

return o;

};

};

【C++代码 2】

class Stack {

private:

(3) ;

public:

void push(Object o){ //压栈

list.addElement(o);

};

Object peek(){ //获取栈顶元素

return list. (4) ;

};

bool isEmpty(){ //判断栈是否为空

return list.numberOfElement() == 0;

};

Object pop(){//弹栈

Object o = list.lastElement();

list.removeLastElement();

return o;

};

};

【问题】

若类LinkedList新增加了一个公有的方法removeElement(int index),用于删除列表中第index个元素,则在用继承和组合两种实现栈类Stack的方式中,哪种方式下Stack对象可访问方法removeElement(int index)? (5) (A. 继承 B. 组合)


正确答案:
试题五 分析
    本题考查面向对象基本概念和C++语言程序设计能力。
    继承和组合是面向对象程序设计中复用的基本手段。继承的方式是在实现类的过程中指定其父类,则该类将自动拥有父类的属性和方法;组合方式则是将某类的对象作为该类的成员,通过成员使用该类的属性和方法。
    本题中C++代码1采用的是继承方式,因此在Stack类中可以直接使用LinkedList类中定义的方法。空缺(1)要求获得栈顶元素,LinkedList类提供了lastElement()方法获得列表尾部的元素,因此可使用该方法获得栈顶元素;空缺(2)位于Stack类的pop()方法中,该方法不仅要获得栈顶元素,还要将栈顶元素删除,因此可以直接复用LinkedList类中的removeLastElement()方法。
    本题中C++代码2采用的是组合方式,因此在Stack类中需要通过LinkedList对象来使用其属性和方法。Stack类中的peek()方法要求获得栈顶元素,list一定是LinkedList类型的对象,因此空缺(3)应该定义link成员变量,空缺(4)应该调用link对象获得队列的尾部元素方法。
    若LinkedList方法新增加了一个公有的removeElement(int index)方法,采用继承方式的子类对象可直接使用该方法,而采用组合方式则必须通过对象形式进行访问,因此必须在Stack类中增加新的方法,并在该方法中通过list对象调用removeElement(int  index)。
试题五 参考答案
(1)lastElement()            (3分)
(2)removeLastElement()          (3分)
(3)LinkedList list           (3分)
(4)lastElement()            (3分)
(5)A,或继承            (3分)


能够取消列表项前面的符号的代码是()。

A.list:none

B.list-style.:none

C.list-type:none

D.list-image:none


答案:B

解析:取消列表项前面的符号的CSS属性为:list-style.:none。举例说明:

<style>
ul li{list-style-type:none;}
</style>
<ul>
    <li>首页</li>
    <li>关于我们</li>
    <li>联系我们</li>

</ul>

执行以上代码后,会发现无序列表前的小圆点不见了。所以本题B选项正确。



请简要描述HUFFMAN编码的基本原理及其基本的实现方法。(仕兰微面试题目)


正确答案:
     


防火墙是怎么实现的? (华为面试题)


正确答案:
    


相关考题:

考题 简述选择面试题目时,应注意问题。正确答案:1)面试题目不能太晦涩或脱离现实。 2)面试题目应该有针对性。 3)面试题目题量应适当。

考题 请教:PHP的面试题(1)第1大题第4小题如何解答?【题目描述】4、如何实现PHP、JSP交互?【参考答案分析】:SOAP,XML_RPC,Socket function,CURL都可以实现。

考题 单选题以下不属于白盒测试的优点是()?A增大代码的覆盖率B与软件的内部实现无关C提高代码的质量D发现代码中隐藏的问题正确答案: D解析: 暂无解析

考题 为了避免实现监听器中定义的所有方法,造成代码的臃肿,在JDK中提供了一些()类,这些类实现了接口所有的方法,但是方法中没有任何代码,属于一种空实现正确答案:适配器

考题 下面哪一个List最适合用来实现FIFO对列()A、ArrayListB、VectorC、LinkedListD、Stack正确答案:C

考题 查看python中变量地址的内置函数是()A、id()B、dir()C、list()D、type()正确答案:A

考题 python中,查看python中数据类型的内置函数是()A、id()B、dir()C、list()D、type()正确答案:D

考题 某html文档中有如下代码,则在浏览器中打开该文档时显示为( )。<form> List1: <inputtype="text"name="List1"/> <br/> LiSt2: <inputtype="text"name="List2"/> </form>答案:A解析:本题考查HTML语言中input标签的type属性。在HTML语言中的input标签有多种属性,具体属性如下表所示:题目中指定了type属性为"text",表示定义一个单行的输入字段,使用户可以在其中输入文本。据此,可在备选项中选择相应答案。

考题 填空题为了避免实现监听器中定义的所有方法,造成代码的臃肿,在JDK中提供了一些()类,这些类实现了接口所有的方法,但是方法中没有任何代码,属于一种空实现正确答案: 适配器解析: 暂无解析

考题 单选题以下不属于白盒测试的优点是()?A增大代码的覆盖率B与软件的内部实现无关C提高代码的质量D发现代码中隐藏的问题正确答案: A解析: 暂无解析