笔试题目

1、项目经历,项目流程图,程序执行流程

 

2、进程间通信

进程通信是指进程之间的信息交换。目前,高级通信机制可归结为四大类:

1)共享存储器系统Shared-Memery System

  (1)基于共享数据结构的通信方式

  (2)基于共享存储区的通信方式

2)管道(pipe)通信系统。

  所谓管道,是指用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件。

3)信息传递系统(Message passing system)

  (1)直接通信方式。(也称消息缓冲通信)

  (2)间接通信方式。发送和接收通过共享中间实体的方式进行消息的发送和接收。(也称信箱通信)

4)客户机-服务器系统(Client-Server system)

  (1)套接字

  (2)远程过程调用

  (3)远程方法调用

 

3、new 与 malloc 区别

  1)new 是C++中发操作符,malloc是C++/C语言的标准库函数。

  2)new不仅可以分配内存,还可以调用类的构造函数,malloc只能分配内存,不能调用构造函数,不能进行初始化类成员的工作。

  3)内存泄露对于new和malloc都可以检查出来,new可以指明哪个文件哪一行,而malloc不能。

  4)new可以认为是malloc加构造函数的执行,new出来的指针是直接带类型信息的,而mallloc返回的是void指针。

 

4、TCP三次握手连接与断开

A向B发出请求,主动打开连接,B被动打开连接。

1)A向B发出连接请求报文段,这时首部中的同部位SYN=1,同时选择一个初始序列号seq=x;

2)B收到哦连接请求报文段后,如同意建立连接,则向A发出确认,在报文段中把SYN和ACK都置为1,确认号是ack=x+1,同时也为自己选择一个初始序号seq=y;

3)A收到B的确认后,再向B发出确认。将报文段中的ACK置为1,确认号ack=y+1,而自己的序号为seq=x+1.

A向其TCP发出连接释放报文段,并停止再发送数据,主动关闭TCP连接。

1)A把释放报文段首部的终止控制位FIN置为1,序号seq=u;

2)B收到连接释放报文段后即发出确认,确认号是ack=u+1,而这个报文段自己的序号是v,这时B进入关闭等待状态。A接收到B发的确认后,进入终止等待2状态;

3)若B已经没有要向A发出的数据,则B发出连接数据报文,将FIN置为1,ACK=1,B的序号为seq=w。确认号为ack=u+1;

4)A收到B的连接释放报文后,发出确认,置ACK为1,自己的序号为seq=u+1,确认号ack=u+1.

 

5、算法链表,判断单项链表是否存在环

bool I***itsLoop(slist * head)

{

    slist * slow = head , * fast = head;



    while ( fast && fast -> next ) 

    {

        slow = slow -> next;

        fast = fast -> next -> next;

        if ( slow == fast ) break ;

    }



    return ! (fast == NULL || fast -> next == NULL);

}
实现代码

 

6、LinkedList 和ArrayList 的区别

  (1)ArrayList是基于动态数组的数据结构,LinkedList是基于链表的数据结构。

  (2)对于随机访问get和set,ArrayList更优于LinkedList,因为LinkedList要移动指针。

  (3)对于增删操作add和remove,LinkedLink比较占优势,因为ArrayList要移动数据。

 

7、数组,存储一到一百,少了一个,乱序,找出缺少的。(使用异或)来自http://blog.csdn.net/yangcs2009/article/details/38384657

(1)求和-容易溢出

Sum=1+2+...+N=(N+1)N/2,然后遍历数列每次从S1中减去当前的数字,最后剩下的数字就是所求。

为了防止溢出我们可以每次在S1大于一定的数字后,就去减,然后继续求和,再大于就继续减,以此类推。

public int find_Miss_Number_By_Sum(int array[], int n) {  
    int sum = 0;  
    if (array.length != n - 1)  
        throw new IllegalArgumentException("数组内的自然数目少于n-1");  
    for (int i : array) {  
        sum += i;  
    }  
    return n * (n + 1) / 2 - sum;  
}
find_Miss_Number_By_Sum

(2)异或^

Y=1^2^3...^N,然后遍历数列每次异或当前的数字,最后剩下的就是要求的数字

任何数异或自己都等于0,任何数异或0都等于他自己

public int find_Miss_Number_By_XOR(int array[], int n) {  
    int result = 0;  
    if (array.length != n - 1)  
        throw new IllegalArgumentException("数组内的自然数目少于n-1");  
      
    for (int i = 0; i < array.length; i++) {  
        result = result  ^ array[i];  
    }  
    for (int i = 0; i < n; i++) {  
        result=result^(i+1);  
    }  
    return result;  
  
} 
find_Miss_Number_By_XOR

(3)O(N)时间的移动-排序  (此方法是缺少K个数都适用)

将a[i]移动到b[a[i]],使得数组有序,然后找出空着的位置

public int find_Miss_Number_By_Sort(int array[], int n) {  
    int result = 0;  
  
    if (array.length != n - 1)  
        throw new IllegalArgumentException("数组内的自然数目少于n-1");  
  
    int b[] = new int[n];  
  
    for (int i = 0; i < array.length; i++) {  
        b[array[i] - 1] = array[i];  
    }  
    for (int i = 0; i < b.length; i++) {  
        if (b[i] == 0) {  
            result = i + 1;  
            break;  
        }  
    }  
    return result;  
}  
find_Miss_Number_By_Sort
import junit.framework.TestCase;  
  
public class Find_Miss_Numbers_By_Move extends TestCase {  
  
    // 1-N的自然数中,少了一个,找出这个数  
    // 方法:将a[i]移动到a[a[i]],使得数组有序,然后找出空着的位置  
    public void find_Miss_Number_By_Move(int array[], int n) {  
  
        int b[] = new int[n];  
        for (int i : array) {  
            b[i - 1] = i;  
        }  
  
        System.out.print("数组的元素为:");  
        for (int j : b) {  
            if (j != 0) {  
                System.out.print(j + "、");  
            }  
        }  
          
        System.out.println();  
        System.out.print("缺少的数为:");  
        for (int k = 0; k < b.length; k++) {  
            if (b[k] == 0) {  
                System.out.print(k + 1 + "、");  
            }  
        }  
  
    }  
  
    public void test() {  
        int a[] = { 1, 2, 4, 7, 8, 9 };  
        find_Miss_Number_By_Move(a, 9);  
    }  
  
} 
Find_Miss_Numbers_By_Move

 

8、了解B+树吗?

9、对Spring了解吗?

10、学过算法,解释一些动态规则?

车间装配线调度问题作为例子。

 

11、与数据库连接的步骤:

  1)加载驱动程序

    Class.forname("com.microsoft.sqlserver.jdbc.SQLServerDriver");//SQLServer 2000

  2)创建数据库URL

    String url = "jdbc:mysql";   //localhost:3306/myDB

    String user = "MyUserName";

    String password = "MYPWD";

  3)建立连接

    Connection conn = DriverManager.getConnection(url,user,password);

  4)关闭连接

     stmt.close();//有访问语句即需要

     conn.close();

  在4)之前可以增加数据访问语句

    Statement stmt = con.createStatement();

    ResultSet rs = stmt.executeQuert("SELECT *FROM student");

转载于:https://www.cnblogs.com/cailingsunny/p/4876517.html

专业面试我的技巧和经验: 一、 巧妇难为无米之炊,事前做一些功课是必须的,把自己学习过的和应聘岗位相关的内容复习下,比如性能与算法岗位:本科电子信息工程和通信工程这些课程肯定学过,通信原理,信息论和编码,信号与系统,数字信号处理,复习一下掌握大概的轮廓一个星期应该差不多可以搞定. 二、 善于引导面试官,比如当面试官问到什么问题不懂的时候,避免连问几个都不懂,可以尝试这么说:我***方面的知识比较匮乏,不是很了解,但是我对***的知识还是比较熟习,我觉得***的知识在我们华为性能与算法工程师必须要掌握的吧。以我面试为例,面试问我3G和4G的关键技术,已经这些关键技术的基本原理,我是做雷达信号处理的,确实不懂。我就和面试官说:对不起,因为研究生期间主要做的雷达信号处理的工作,我对移动通信的知识了解甚少,但是我对移动通信的基础只是比如通信原理和调制解调技术还有一定的了解(当然这都是我事先复习好的),我觉得无论什么型的通信技术都离不开这些基本的理论。接着面试官就让我说信源编码和信道编码的作用已经他们通常采用的方法,当然我也就能对答如流了。所以,引导很重要。 三、 专业面试对自己简历上不要为了蒙骗面试官,写的项自己捡不熟悉,对简历上的东西一问三不知,语言表达不清楚,说不半天不能告诉面试官你做的工作内容和意义,这个很不好。 群面 一般10-14个人,看当天应聘的人数而定,分2组,一个话题,让排序之的,或者辩论之的,不同的组会抽到不同的问题,不同的地方也会有不同的问题,在这里把问题说出来没什么意义,这一轮会有很多意想不到的情况,比如这组我本来不是选为组长,但是在做总结的时候面试官让我做总结,或者突然问你刚才某某同学说的话你同意吗,或者突然说你今天脸色好像不好看之的,所以灵机应变才是王道。群面一般要自我介绍,自我介绍要简短,不要说太多,我建议按以下几个方面说,自己学校专业、来自哪里、然后说自己学习,主要稍微说下自己的项,说下名字就OK了,然后说自己做项获得成果,比如发表文章,专利和之的。然后说自己优点和缺点,一般情况下优点缺点都要说,而且我觉得最好优点缺点自己多准备几个,免得到时候你要说的前面的人都说了,就像我们这组:我开始说缺点的时候说我性格比较急,做什么事情都想快点做完,午觉也不睡,但是经常适得其反,中午不谁觉,下午就工作效率低。后面好几个同学说的时候都这么说了,惹的面试官说,你们重复一个东西说。说缺点的时候大家要慎重,不要说和自己工作相关的缺点,比如我们那个组一个同学说:我的缺点就是比较随性,重要场合经常穿拖鞋为此挨了不少批评。 面试官:。。。。(前面省略了一些),你这种随行的行为有同学提醒过你吗?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值