6-15筆試總結(jié)
第一場筆試是參加某cloud公司的,全是大題。
題目如下:
(1)數(shù)字簽名的意義以及給出一個實現(xiàn)方案。
發(fā)送方使用自己的私有要是進行加密,然后接收方利用對方的公鑰,進行解密。
報文的發(fā)送方用一個哈希函數(shù)從報文文本中生成報文摘要(散列值)。
發(fā)送方用自己的私人密鑰對這個散列值進行加密。然后,這個加密后的散列值將作為報文的附件和報文一起發(fā)送給報文的接收方。
報文的接收方首先用與發(fā)送方一樣的哈希函數(shù)從接收到的原始報文中計算出報文摘要,接著再用發(fā)送方的公用密鑰來對報文附加的數(shù)字簽名進行解密。
如果兩個散列值相同、那么接收方就能確認該數(shù)字簽名是發(fā)送方的。通過數(shù)字簽名能夠?qū)崿F(xiàn)對原始報文的鑒別。
意義:1能確認消息是否是發(fā)送方發(fā)出的,2確認消息的完整性。
(2)一道求概率分布的問題。
(3)兩個線程亂序執(zhí)行,求輸出結(jié)果的題目。
(4)最大子序列和問題。
(5)一道考察眼力的問題(沒多大意義)
(6)線程和進程之間的區(qū)別。
(7)遞歸版本的qsort 沒有使用partition函數(shù)。這個題目重點解決一下,是第一次遇到。
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std ;

/**//*遞歸版本的qsort , without partition*/
void qsort(int * arr , int l , int h)

{
int i = l ;
int j = h ;
int key = arr[(i + j) >> 1] ;
while(i < j)

{
for(;(i < j) && (arr[i] < key) ; i++) ;
for(;(i < j) && (arr[j] > key) ; j--) ;
if(i <= j)

{
int temp = arr[i] ;
arr[i] = arr[j] ;
arr[j] = temp ;
i++ ;
j-- ;
}
}
if(j > l) //結(jié)束時,i > j
qsort(arr , l , j) ;
if(i < h)
qsort(arr , i , h) ;
}


int main()


{

int a[] =
{5 ,2 ,7 ,9 ,3 ,6 ,2 ,6 ,11 ,1} ;
qsort(a , 0 , 9) ;
for(int i = 0 ; i < 10 ; i++)

{
cout<<a[i]<<" " ;
}
getchar() ;
return 0 ;
}
以上注意一點,在for循環(huán)中,必須是 arr[i] < key ,arr[j] > key 。
不能出現(xiàn)相等,必須保證l -> j之間均小于等于key,而 i->h 之間的數(shù)都大于key
然后進行遞歸處理。