順豐機器學習崗筆試題筆記

不能截屏和拍照,憑記憶會議一下,做個記錄,當做筆記了

1、下列賦值語句正確的是

A、a,b,c = 1,2,"john"

B、[a,b] = ['1','2']

C、a = ['abc',4,'python']

D、a = b = c = 1

解析: ABCD都對

 

2、以下程序的輸出是?

class Dog:
    role = 'Dog'
    def __init__(self,name):
        self.name = name
    def run(self):
        print("Dog is running...")

print(Dog.role)
print(Dog.run)

答案:

解析:函數名是⼀個變量, 但它是⼀個特殊的變量, 與括號配合可以執⾏函數的變量. 當打印函數名的時候會發現出現的是一個內存地址.  函數名可以賦值給變量

3、已知概率密度函數和樣本值,求參數θ

4、下面程序的輸出是?

#include<iostream>
using namespace std;
int main() {
	int n = 10;
	int ans = 0;
	int cur, x;
	for (int s = 0; s < 1024; ++s) {
		cur = 0;
		for (int j = 0; j < 10; ++j) {
			x = (1 << j)&s; 
			if (x != 0) {
				cur++;
			}
		}
		if (cur == 3) {
			ans++;
			cout << "ans= " << ans << endl;
		}
	}
	cout << ans << endl;
	return 0;
}

答案:0000000000   中選3個置爲 1 ,答案爲C10 3, 結果爲120.

5、以下程序輸出爲?


#include<iostream>
using namespace std;
int fun(int a, int b) {
	return b == 0 ? a : fun(b, a%b);
}
int main() {
	int a = 636, b = 9;
	cout << a*b / fun(a, b) << endl;
	return 0;
}

答案:fun()的作用很明顯是輾轉相除法(又叫歐幾里得算法)求最大公約數,所以結果爲  636*9/3  = 1908

6、霍夫曼樹又叫最優二叉樹

7、LDA和PCA下列區別正確的是?

A、LDA與PCA都是常用的降維技術。PCA主要是從特徵的協方差角度,去找到比較好的投影方式。

B、LDA更多的是考慮了標註,即希望投影后不同類別之間數據點的距離更大,同一類別的數據點更緊湊。

7、單例模式中,單例類構造函數的可見性爲()

A、public

B、private

C、protected

D、都不對

答案:B

8、相關係數和協方差的關係

編程: 行增,列增的二維數組裏面找目標值,複雜度爲N方和N+M的都寫一下

#include<iostream>
#include<vector>
using namespace std;
//bool findTargetNum(vector<vector<int>>& vec, int target) {
//	int rows = vec.size();
//	int cols = vec[0].size();
//	for(int i = 0; i < rows; i++)
//		for (int j = 0; j < cols; j++) {
//			if (vec[i][j] == target)
//			return true;
//			else return false;
//		}
//
//}
bool findTargetNum(vector<vector<int>> &vec, int target) {  
	int rows = vec.size();
	int cols = vec[0].size();
	int start_row = 0;
	int start_col = cols - 1;
	while (start_col >= 0 && start_row < rows)  //時間複雜度爲m+n,注意這個地方是小於號,沒有等於,邊界條件一定要清楚
	{
		if (vec[start_row][start_col] == target) return true;
		else if (vec[start_row][start_col] > target )
			start_col--;
		else  if (vec[start_row][start_col] < target)
			start_row++;
	}
	return false;
	
}
int main() {
	int m, n;
	cin >> m >> n;
	vector<vector<int>> input(m,vector<int>());
	for (int i = 0; i < m; i++) {
		while(1){
			int temp;
			cin >> temp;
			input[i].push_back(temp);
			if (cin.get() == '\n') break;
		}
	}
	bool result = findTargetNum(input,10);
	cout << result;
	
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章