2014年实习生招聘之爱立信上海研发中心实习生招聘部分笔试题—2014/04/17

来源:互联网 发布:基线网络监控管理系统 编辑:程序博客网 时间:2024/04/29 05:07

爱立信武汉招聘是在武汉理工大学进行的,笔试题全部是英文,以下是几个我做的不好和不会做的题目,1、2、3题是我翻译成中文的。

1.有个Student,包含姓名,性别,年龄属性,完成下列函数,这个函数的功能是删除列表中某个年龄的所有学生。函数的声明如下:

void delete(Student* list, int age)

注:自己定义数据结构。

 解答:

#include <stdio.h>#include <stdlib.h>typedef struct node{int data;struct node* next;}node, *LinkList;typedef node* Student;//头插法建立不带头结点的单链表LinkList createLinkList(){int i;node *head=NULL,*cur,*end;//head是第一个结点,end指向链表的最后一个结点while((scanf("%d",&i)) != EOF){if(head == NULL){head = (node*)malloc(sizeof(node));head->data = i;head->next = NULL;end = head;}else{cur = (node *)malloc(sizeof(node));cur->data = i;end->next = cur;end = cur;}}end->next = NULL;return head;}void delete(Student* list, int age){//list实际上是node**类型,因为有可能要改变list//比如list为2 2 2,要删除2,则list变为空了,所以需要使用指针的指针node* pre = NULL;//需要删除的结点的前一个结点node* pNode = NULL;node* tmpNode = NULL;if((*list) == NULL)//如果链表为空return ;while(*list != NULL && (*list)->data == age){//找到第一个值不是age的结点//循环条件不能写反,否则会出错tmpNode = *list;*list = (*list)->next;free(tmpNode);}pNode = *list;while(pNode != NULL){if(pNode->data == age)//如果当前结点的值等于age{tmpNode = pNode;pre->next = tmpNode->next;pNode = pNode->next;free(tmpNode);}else{pre = pNode;pNode = pNode->next;}}}void printLinkList(LinkList head){while(head){printf("%d ",head->data);head = head->next;}}int main(){LinkList list;int age;    list = createLinkList();printf("输入为:");printLinkList(list);printf("\n");printf("输入需要删除的结点的值:\n");scanf("%d",&age);delete(&list,age);printf("删除后:\n");printLinkList(list);printf("\n");return 0;}

2.简单描述下TCP3次握手(最好用图描述)。

 解析:

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,如图1所示。

 (1) 第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。

 (2) 第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。

 (3) 第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。

完成三次握手,客户端与服务器开始传送数据。

3.用户在淘宝网上把某一本书加入了购物车,当这本书降价了,系统会通过邮件、电话等形式告诉用户书降价了,请用相关代码实现这个功能(有一种设计模式适合这种情况)。

 解析:

import java.util.Vector;public class TestObserverPattern {    public static  void main(String[] args) {        Book book = new Book("大话设计模式",63.50);        User u1 = new User("Kobe",book);        User u2 = new User("James",book);        User u3 = new User("Wade",book);        book.setPrice(63.50);        book.setPrice(62.50);        book.setPrice(60.50);        book.setPrice(56.50);    }}abstract class subject {    private Vector<Observer> vector = new Vector<Observer>();    public void addObserver(Observer observer) {        vector.add(observer);    }    public void deleteObserver(Observer observer) {        vector.remove(observer);    }    public void notifyObervers() {        for(int i=0; i<vector.size(); i++) {            ( (Observer)vector.elementAt(i)).update();        }    }}interface  Observer {    void update();}class Book extends subject {    private String name;    private double price;    public Book(String name, double price) {        this.name = name;        this.price = price;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public double getPrice() {        return price;    }    public void setPrice(double newPrice) {        double oldPrice = price;        this.price = newPrice;        if(!(oldPrice - newPrice > -0.000001 && oldPrice - newPrice < 0.00001))            notifyObervers();    }}class User implements Observer {    private String name;    private Book book;    public User(String name,Book book) {        this.name = name;        this.book = book;        book.addObserver(this);    }    public void update() {        System.out.println("用户 " + name + " 被通知书—《"+ book.getName() +"》的价格发生了变化,新价格为:" + book.getPrice());    }}

4.how to put a job to run in the background? How to put a backgroundto foreground?(Unix/Linuxcommand)

 解析:bg——将程序搬到后台运行;fg——将程序搬到前台运行。

5.How to print a core stack in Unix/Linux?

 解析:这题不大懂意思,有知道的请指教啊。

Result:笔试通过

0 0