面经
计算机基础
Windows bat
Linux shell
CPP
0.学习目的
学习 C++,关键是要理解概念,而不应过于深究语言的技术细节。
学习程序设计语言的目的是为了成为一个更好的程序员,也就是说,是为了能更有效率地设计和实现新系统,以及维护旧系统。
C++ 是一门应用广泛的语言。基本上每个应用程序领域的程序员都有使用 C++。
1.什么是面向对象开发?
面向过程(Procedure-Oriented Programming,简称POP)是一种编程模型,由一系列要执行的计算步骤组成,通常采用自上而下、顺序执行的方式。
//面向过程:把大象放进冰箱
include <iostream>
// 打开冰箱函数
bool openRefrigerator()
{
//........
}
// 放进大象函数
bool pushElephant()
{
//........
}
// 关闭冰箱函数
bool closeRefrigerator()
{
//......
}
int main()
{
//.
if(openRefrigerator()) //是否可以打开冰箱
{
pushElephant(); //放进大象
closeRefrigerator(); //关闭冰箱
}
//.
}
面向对象编程(Object-oriented programming,简写:OOP)是一种计算机编程模型,它围绕数据或对象而不是功能和逻辑来组织软件设计,更专注于对象与对象之间的交互,对象涉及的方法和属性都在对象内部。说的更底层一点就是面向对象是一种依赖于类和对象概念的编程方式。
类:是相同种类对象的抽象,是它们的公共属性。
对象:对象是类的实例。
面向对象将一个事物描述为一个对象,这个对象包括各种属性和方法,例如上面把大象装进冰箱的例子,冰箱的属性包括:长、宽、高、温度等,方法有:打开、关闭、存储等,这些属性和方法都属于这个对象。一个对象一般包括成员变量和成员函数两大类。
#include <iostream>
using namespace std;
class Elephant
{
private :
int length;
int weight;
public :
bool eat()
{
//...
}
};
class Refrigerator
{
private :
int length; // 长
int width; // 宽
int height; // 高
public :
// 打开冰箱
bool openRefrigerator()
{
//........
}
// 放进大象
bool pushElephant(Elephant elephant)
{
//........
}
// 关闭冰箱
bool closeRefrigerator()
{
//........
}
};
int main()
{
Refrigerator ref; // ref 冰箱对象
Elephant ele; // ele 大象对象
if(ref.openRefrigerator()) // 打开冰箱
{
ref.pushElephant(ele); // 放进大象
ref.closeRefrigerator(); // 关闭冰箱
}
}
最后,来看一下面向过程和面向对象的区别,如下所示:
(1)安全性
面向对象比面向过程安全性更高,面向对象将数据访问隐藏在了类的成员函数中,而且,类的成员变量和成员函数都有不同的访问属性。而面向过程并没有合适的方法来隐藏程序数据。
(2)程序设计上
面向过程通常将程序分为一个个的函数,而面向对象编程中通常使用一个个对象来,函数通常是对象的一个方法。
(3)过程
面向过程通常采用自上而下的方法,而面向对象通常采用自下而上的方法。(我的理解:自上而下就是从功能层到数据层,而自下而上是从数据层到功能层)
(4)程序修改
面向大型工程,面向对象编程更容易修改程序,更容易添加新功能。
2.从cpp关键字看cpp核心语法
4大特性:抽象、封装、继承、多态
基本数据类型:整型、浮点型、布尔型、字符型
基本运算:算术运算、逻辑运算、关系运算、位运算
逻辑结构:条件(if、switch)、循环(while、for)
函数:函数声明、函数定义、函数调用
类与对象:抽象(class、public、private、计算Box体积的例子,只对用户开发数据接口)、封装(把数据和操作数据的函数捆绑在一起的机制)、继承(派生类)、多态(调用成员函数时,会根据调用函数的对象的类型来执行不同的函数)
指针:动态内存分配(~)、初始化(int *ptr = NULL; )、地址运算(※、&)
3.C++标准库与STL模板库
标准库:文件IO、时间time等
STL模板库:容器(Containers)、算法(Algorithms)、迭代器(iterators)
OpenCV视觉库:
PCL点云库:
Qt界面设计框架:
widget
dialog
mainwindow
ROS机器人系统框架:
#include "ros/ros.h"
int main(int argc, char** argv)
{
ros::init(argc,argv,"hello");
ros::NodeHandle nh;
ROS_INFO_STREAM("hello world!");
}
4.常用数据结构与算法
了解常用数据结构(表、栈、树、图)与算法(排序、查找),刷 Leetcode 做项目!!!
常用数据结构部分:
- 数组
- 链表
- 队列
- 栈
- 散列
- 树
- 堆
常用算法部分:
- 动态规划
定义:动态规划的三个步骤就是定义状态,列出递推公式,找出边界条件。(类似求解最优化问题)
例子:求解子序列出现的个数(115)、买卖股票的最佳时机(123)、解码方法(91)、目标和(494)、分割等和子集(416)、最大的以1为边界的正方形(1139)、解最长公共子串(牛127)、解单词拆分、俄罗斯套娃信封问题、动态规划求不同路径 (机器人)
- 回溯算法
定义:回溯算法实际上一个类似枚举的迭优搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。
例子:经典回溯算法题-全排列(46)、剑指 Offer-字符串的排列
- 贪心算法
例子:优势洗牌-田忌赛马问题(870)、解救生艇问题(881)
- 二叉树
例子:二叉树展开为链表,多种方式解决(114)
- 反转链表
例子:反转链表 (92)
- 栈
例子:剑指 Offer-栈的压入、弹出序列
- 位运算
例子:两数相除(29)、位运算解两整数之和(371)、数字转换为十六进制数(位运算解决)(405)
常用排序算法:
- 冒泡
- 选择
- 插入
- 快速
- 归并
常用查找算法:
- 顺序
- 二分法
- 插值
- 哈希
Python
0.学习目的
Python是一种解释型、交互型语言,代码结构清晰明了且易学,广泛用于数据挖掘、人工智能等领域。
1.解释型语言的优势
易于学习、易于阅读、扩展性强
对缩进格式强要求,无结尾;标点
2.从python关键字看python核心语法
基本数据类型:整型、浮点型、布尔型、字符型
基本运算:算术运算、逻辑运算、关系运算、位运算
逻辑结构:条件(if、switch)、循环(while、for)
函数:函数定义、函数调用
类与对象:class类定义
3.Python标准库与相关库
标准库:os系统接口、sys命令行、math数学、datetime日期、2to3工具
OpenCV视觉库:
PCL点云库:
4.常用数据结构与算法
二分查找(递归法)
AI与自动驾驶车辆
感知定位
感知系统的目的是获取目标物的实时位置和状态,跟踪或避开它。主要研究内容有:
- 摄像头:图像2D目标检测
- 激光雷达:点云3D目标检测
- 融合感知:特征前融合和后融合
定位系统的目的是建图和定位,为决策规划模块提供位置信息。主要研究内容有:
- 激光雷达:点云SLAM
- 高精地图:3D-Map
规划控制
规划控制系统包括全局规划、局部规划和运动控制模块,其目的是在遵守交通规则的前提下,使车辆顺利从A点到B点。主要研究内容有:
- 全局规划:路径点循迹
- 局部规划:A*启发搜索避障
- 运动控制:纯跟踪控制
车辆接口API通常由USB-CAN/CAN卡作为通讯模块,控制车辆的油门、刹车和转向。
智能座舱
智能座舱包括车辆交互系统和V2X通讯系统。
系统工程
系统工程是为了最好地实现系统的目的,对系统的组成要素、组织结构、信息流、控制机构等进行分析研究的科学方法。
学会从三个维度分析问题:时间维、逻辑维、知识维。
从三大理论中学习思想:信息论、控制论、系统论。
一套优秀的自动驾驶实时系统是要能充分发挥各硬件优势,集成各子系统算法模块,保障车辆任务的正常运行和车辆自身的安全。
具体要做的包括:结构优化、电路优化、代码优化
关于考研的Q&A
非全日制与全日制的不同
全日制与非全日制是研究生阶段两种不同的学习培养方式。
目前,学硕基本上都是全日制,专硕有全日制(脱产)和非全日制(非脱产)两种学习方式。
另外,非全日制 不等于 在职研究生。
2017年起,研究生分为两种,双证研究生(包括全日制与非全)和单证研究生(在职人员)。在职只有学位,没有学历,也就不属于学历教育。
为什么考非全
本科毕业后,目前这份工作还可以,但想要继续提升自己,非全是个选择;另外就是一定要选择非脱产,这样才可以一边学习一边工作,所以选择学校和老师的时候要问清楚。
非全只是锦上添花,提升一下学历。——自己对自己负责
非全日制在就业、升学和落户上的待遇
非全可能不会和全日制一样,会给你校招的机会,你毕竟是有一份工作的,想要去更好的平台,所以在非全这个学历上,别钻科研,把学分修满,达到毕业要求,早点去实习、找工作,别听别人忽悠。
就计算机而言,社招人不看你全还是非全,先要看你是不是9/2院校,还有就是实力够不够!
非全可以考编制!
国家规定非全和全执行同样的政策和标准,所以非全可以考博!
上课&住宿&论文
不同学校上课要求不同;
指定不提供住宿,前面说了,正常上班,非全只是提供“奔向高收入/跳槽+双证学历教育”的加持。
关于学校&专业&导师的选择
学校
关于学校,建议选择211和985院校,部分985院校非全日制研究生都是200+的招生名额,招生名额充裕。只要通过初试,能够进入复试,复试方式也与全日制无异(一般都是1:1.2录取),因此进入复试被录取的几率很高。985双非毕业,就业率非常好,北上广等一线大城市起薪可达20万,可由小店进军大厂!含金量极高的985双证背书更有利于职场晋升。
想要报考计算机非全日制,只能选择专硕。而计算机专硕对应的专硕名称是【电子信息】专业代码【085400】!
首选:江浙沪地区 碍于自己实力一般,建议选择211,只剩下华东理工大学、东华大学、上海大学、南航、南理工、苏州大学、江南大学、中国矿业大学、河海大学。
这几个学校从难度上来说不分伯仲,主要考虑以后打算在哪个城市发展吧!
想留在上海就选华东理工、上大、东华
想留在南京就选南航、南理工、河海
无锡就选江南大学
苏州就选苏大
徐州就选中国矿业大学
专业
目前计算机是万金油,对于本科是机械的来说,非全能给我一个“科班”的标签,对职业道路有好处。
看哪个学校有非全电子信息调剂名额,说明招不满。
从上面的学校里看电子信息专硕哪个和自己的方向比较接近:
1.苏州大学:无调剂
2.中国矿业大学:非全都是定向
3.东南大学苏州校区:
4.北京交通大学/北京工业大学:
5.国科大人工智能学院:有调剂
6.南京邮电:有调剂
7.江南大学:有调剂。非全日制专业只招收在职定向就业考生,进入复试名单的调剂考生,需在复试前提交在职证明(或就业协议)。非全日制学生在读期间不享受奖助学金,不予安排住宿,考生报考前应充分了解招生学院非全日制专业的培养、学位政策。