慧拓 规划算法实习生 20220818 笔面试

公司了解

主要是做无人矿车的,面试邀请发的公司名称是北京慧拓智能有限公司,刚好慧拓也是做矿车相关的业务的,因此可能是慧拓的子公司。

笔试情况

这家公司的笔试题,不是在线做,在自己的电脑上离线做。是通过邮件发给了我,让24小时内回复啥时间参加面试。有点奇怪,而且面试也没问。面试时问了面试官,说让把做完的题发送给HR。
总体题目较为简单。先把题目以及自己的答案共享出来,由于水平有限,有错的地方,请大家指正。

1、考察动态规划。

题目描述:

一只猫 每天吃 1-3只 老鼠 求解 t天 吃 n 只老鼠 的最多吃法。
函数 CountRat():
Input:
int t: 时间 t 天内
int n: 吃 n 只老鼠
return:
int: 做多的吃法

具体代码

int CountRat(int t, int n)
{ 
	vector<vector<int> > dp(n + 1 ,vector<int> (t + 1,0)); // dp[i][j]  表示 在j天 内 吃i只老鼠的最多方法 
	if (t > n ) return 0;  // 猫要饿死。 
	if ((t == 1 && n <= 3)||(t == 2 && n ==2)||(t == 3)&&(n == 3)) return 1; // 特殊情况 
	if(t==2 && n==3) return  2;    
	for (int i = 1; i <= 3; ++i) {
		dp[i][1] = 1;
	}
	dp[2][2] = 1;
	dp[3][3] = 1;
	dp[3][2] = 2;
	for (int i = 3; i != n + 1; ++i) {
		for (int j = 2; j != t + 1; ++j) {
			dp[i][j] = dp[i - 1][j - 1] + dp[i - 2][j - 1] + dp[i - 3][j - 1];/* 递推公式 在j天吃i只老鼠的方法等于 j-1天吃i-1
			+ j-1 吃 i-2 个  + j-1 天 吃 i-3个 种方法  */
			 
		}
	}
	return dp[n][t];
}


int main()
{
    std::cout << CountRat(3, 5) << std::endl;
}

2、考察双指针

题目描述

//给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
//
//示例 1:
//输入:head = [1,2,3,4,5]
//输出:[5,4,3,2,1]
//
//示例 2:
//输入:head = [1,2]
//输出:[2,1]
//示例 3:
//
//输入:head = []

具体代码

采用了两种方法,最容易想到的方法以及双指针法

struct ListNode {
    int val;
    ListNode* next;
    ListNode(int x) : val(x), next(nullptr) {}
};

// 1 -> 2 -> 3 -> 4 -> 5
ListNode *RotateList_simple(ListNode *List) {
    vector<int> temp;
	 while(List){
	 	temp.push_back(List->val);
	 	List = List->next;
	 }
	 int length = temp.size(); 
	 ListNode *tail = new ListNode(temp[temp.size()-1]);
	 ListNode *result = tail;
	 
	 for (int i = length - 1 ; i != 0; --i ) {      // 取不到0,所以 应该使用temp[i-1] 进行索引。 
	 	tail->next = new ListNode(temp[i-1]);    
		tail = tail->next; 
	 }
    return result;
}

ListNode *RotateList_double_pointers(ListNode *List){
	 ListNode *temp;
	 ListNode *cur = List;
	 ListNode *pre = NULL;
	 while(cur){
	 	temp = cur->next;  //保存cur 的下一个节点指针 ,因为后面改变了cur的指向。 
	 	
	 	cur->next = pre;	  
	 	
	 	// 更新 pre,cur 
	 	pre = cur;  // 当前节点保存成pre。 
		  
	 	cur = temp; // 下一个节点保存成当前节点。 
	 }
	 return pre;
}

int main()
{
    ListNode *Head = new ListNode(1);
    ListNode *ListTemp = Head;
    ListTemp->next = new ListNode(2); ListTemp = ListTemp->next;
    ListTemp->next = new ListNode(3); ListTemp = ListTemp->next;
    ListTemp->next = new ListNode(4); ListTemp = ListTemp->next;
    ListTemp->next = new ListNode(5); ListTemp = ListTemp->next;

    //ListTemp = RotateList_double_pointers(Head);
    ListTemp = RotateList_simple(Head);
    while (ListTemp) {
        cout << ListTemp->val << endl;
        ListTemp = ListTemp->next;
    }
}

3、考察C++基本知识

题目描述

// 获取英文文段中单词的数量,重复单词出现几次算几次,单词中只会出现’a’-‘z’和’A’-‘Z’

具体代码


//ASCII码   A-Z  65-90   a-z  97-122   0的ASCII为 48
int Words_Num(std::string str) {
	int sum_word = 0;
	for (int i = 0 ; i != str.size(); ++i){
		int temp = str[i] - '0';
		if((temp >= 17 && temp <= 42)||(temp >= 49 && temp <= 74)){
			++sum_word;
		}
	}
    return sum_word;
}

int main()
{
    std::string strText = "In developing driver support systems, it is important to prevent the system from intervening with the driver in the middle of corrective action because the driver support system requires a cooperative operation between controllers and drivers.";

    std::cout << Words_Num(strText) << std::endl;
}


面试情况

1、自我介绍

首先是自我介绍部分,根据我自己的简历,稍微说了一下,时间大概不到一分钟。

2、介绍项目

1) 本科毕设的Lattice算法是怎么做的呢?输入是啥?
2) 简要介绍一下Lattice的算法?
3) 在读研期间,是否将算法实际落地过?简要介绍。
4) 是否遇到过在采样过程中,出现轨迹结果不合理的情况,应当怎么进行修改?
5)在将SL坐标系转化到UTM大地坐标系的情况下,有没有遇到曲率爆炸的情况,是怎么解决的?
6)项目里面的全局规划是怎么做的?
7) 曲率的求解是怎么求的?
8)如何利用QP优化的全局路径,怎么构建的目标函数。
9)对C++了解么,有没有做过相关的项目?
10)有没有想了解的问题?

3、总结反思

1、需要多多关注 优化轨迹的曲率的相关方法。
2、 C++需要深入做一个项目,让自己更全面一点。
3、面试官没有对语言进行考察,也没有问语言相关的知识点,也没让自己手撕算法题,有点不太正常。

4、面试结果

挂掉了,原因不详,又可能自己做过的东西也都是非常老的,赶不上现在的潮流了,掌握的技术对公司来说,比较落后。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值