奇安信筆試

一、筆試介紹

奇安信是一家安全科技公司,為全球客戶提供成功的網絡和終端安全解決方案。奇安信筆試是奇安信公司用於招聘全職工程師的一種方式。

筆試主要測試面向對象編程、算法設計和數據結構等方面的知識。筆試分為選擇題和編程題兩部分。

選擇題包括計算機基礎、計算機網絡、數據庫、操作系統、數據結構和算法設計等方面,共50道題,答題時間為1小時。

編程題主要考察候選人的算法設計和編寫能力。編程題的難度較高,需要候選人具備紮實的算法和編程基礎。需要在約2小時內完成一道算法題。

二、選擇題

選擇題目的難度較為適中,因此考察了解的範圍比較廣,包括計算機基礎、計算機網絡、數據庫、操作系統、數據結構和算法設計等方面。這裡以操作系統為例,介紹一下其中的一道選擇題。

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    char* a;
    char* b = "qi" "an" "xin";
    a = malloc(sizeof(b));
    a = b;
    printf("%s\n", a);
    return 0;
}

運行以上程序,輸出的結果為:

qianxin

該程序的正確選項是:

A. 輸出結果為”qi” “an” “xin”。

B. 輸出結果為”qianxin”。

C. 輸出結果為”qi an xin”。

D. 程序編譯會出錯。

正確答案是B。此題考查了對C語言中指針和數組的理解。程序中a = b會導致原來的malloc分配的內存泄露。正確的寫法應該是使用strcpy函數複製字符串。

三、編程題

奇安信的編程題難度較高,需要候選人掌握高級數據結構、算法和操作系統等知識。這裡以一道動態規劃問題為例來介紹。

題目描述:

給定一個數組,求該數組中的最長上升子序列的長度。

輸入格式:

第一行輸入一個整數n,表示數組的大小,接下來一行輸入n個整數表示該數組。

輸出格式:

輸出一個整數,表示該數組中的最長上升子序列的長度。

樣例輸入:

7
1 2 3 4 5 6 7

樣例輸出:

7
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n, i, j, ans = 1;
    scanf("%d", &n);
    int arr[n], dp[n];
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
        dp[i] = 1;
    }
    for (i = 0; i < n; i++) {
        for (j = 0; j < i; j++) {
            if (arr[j]  dp[j] + 1 ? dp[i] : dp[j] + 1;
        }
        ans = ans > dp[i] ? ans : dp[i];
    }
    printf("%d\n", ans);   
    return 0;
}

以上代碼是正確的答案。該題考查了動態規劃的思想。通過dp[i]保存以arr[i]為結尾的最長上升子序列長度,再將最大值輸出即為最長上升子序列長度。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/311379.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-05 13:23
下一篇 2025-01-05 13:23

相關推薦

發表回復

登錄後才能評論