技术面试记录

调试工具:

在线运行C语言 (bejson.com)

一、Linux+C底层开发(达发科技系统软件开发工程师)

感受:数据结构基础薄弱,面对编程题手足无措,没有很好的逻辑和思路;只说得上来最基本的Linux操作命令,稍微有技术含量一点的操作就不会了;还是需要深入啊!

1.数据结构和C编程(循环和遍历):

(1)数据结构

A.如何检查一个链表是否为环形链表;

答:

判断一条链表是否是环形链表的两种方法_环形链表判断算法_「江太白」的博客-CSDN博客

(2)编程题

A.用"*"打印形状

用"*"打印出以下形状
       *
      ***
     *****
    *******
   *********
  ***********
 *************
  ***********
   ********* 
    *******
     *****
      ***
       *

答:

(C语言实现):

int main()
{
    printf("Hello, World");
    return(0);
}

拓展补充:用“*”打印图形题型(C++实现):

(a)                                           (b)                                         (c)

思路:确定输出行数——循环控制输出*号行数——循环控制输出空格个数——循环控制输出*号个数

//(a)
#include <iostream>
using namespace std;
int main()
{
	int i;							//i为输出*号的行数 
	cout<<"请输入一个整数:";	
	cin>>i;
	for(int j=0;j<i;j++)			//此循环控制输出*号行数 
	{
		for(int k=0;k<=j;k++)		//此循环控制输出*号个数 
			cout<<"*";
		cout<<endl;
		
	 } 
	
	return 0;
 } 
//(b)
#include <iostream>
using namespace std;
int main()
{
	int n;							//n为输出*号的行数 
	cout<<"请输入一个整数:";	
	cin>>n;
    for(int i = 0; i < n; i++){ 
        for(int j = 1; j <= n-i-1; j++){ 		//此循环控制输出(空格)个数
            cout << ' ';
        }
        for(int j = 1; j <= 2 * i - 1; j++){    //此循环控制输出*号个数 
            cout << '*';
        }
        cout << endl;
    }
    return 0;
}
 
//(c)
#include <iostream>
using namespace std;
int main()
{
	int n;							//n为输出*号的行数 
	cout<<"请输入一个整数:";	
	cin>>n;
	for(int i=0;i<n;i++)			//此循环控制输出*号行数 
	{
		for(int j=0;j<n-i-1;j++)	//此循环控制输出(空格)个数 
			cout<<" ";
		for(int k=0;k<=i;k++)		//此循环控制输出*号个数 
			cout<<"*";
		cout<<endl;	
	 } 
	
	return 0;
 } 

2.网络协议相关:

(1)UDP和TCP的区别,UDP和TCP的具体流程,报文结构

答:最根本的区别是MAC地址的不同。

TCP协议详解 (史上最全)_开放式tcp_40岁资深老架构师尼恩的博客-CSDN博客

UDP通信的具体流程如下

UDP 通信流程_udp通信过程_艾米莉亚糖的博客-CSDN博客

服务端:                                                    客户端:

  1. 创建一个套接字。                                    1.创建一个套接字。
  2. 绑定地址信息(包括端口和IP)。           2.发送数据。                                             
  3. 接收数据。                                               3.接收数据。
  4. 发送数据                                                   4.关闭套接字
  5. 关闭套接字                                                          

         UDP协议的特点是无连接、不可靠和面向数据报。它适用于实时性要求高于安全性的场景,例如视频音频传输。在UDP通信中,每次接收到的数据可能只是部分数据,不一定需要获取完整的缓冲区数据。关闭套接字时,需要释放资源。这可以通过调用close()函数来实现。

TCP具体通信流程如下

TCP 通信流程详解(附有案例代码)_tcp通信_散修-小胖子的博客-CSDN博客

客户端:                                                                 服务器端:

  1. 创建一个套接字。                                                  1.创建一个套接字。
  2. 连接服务器,指定连接的服务器IP和端口。           2.绑定IP和端口。                                       
  3. 发送数据。                                                             3.设置监听。
  4. 接受数据                                                                 4.阻塞等待,直到有客户端发起连接
  5. 关闭套接字                                                             5.通信:接受数据和发送数据                                                                                                     6.通信结束,关闭套接字 

三次握手和四次挥手

(2)ARP、DMA是什么

3.Linux相关

(1)查看进程用什么命令

(2)用top查看实时进程时,用什么命令查看CPU占用资源情况

(3)软中断

(4)进程的三种状态

二、电机控制工程师(泉峰)

1.电机驱动原理及电路

2.晶体管、mos管特性

3.DC/DC、DC/AC、AC/DC等电能变换电路原理

(1)DC/DC

A.boost升压电路:

(升压斩波电路 )由输入直流电源、储能电感、全控型开关器件、续流二极管、滤波电容、控制单元(PWM产生电路)和负载组成。

        Boost升压电路有两种运行模式,连续和断续时分别对应其连续导通模式(CCM)和断续导通模式(DCM)。连续导通模式下电感中电流时连续的,没有中断,出现在负载较重的时候,此模式下Boost电路处于全力输出阶段;断续导通模式下,电感电流在功率管关闭期间会下降到零,并持续到再次打开功率管,此模式下输出纹波会比较大;还有一种Pulse-Skipping模式出现在轻负载时,此模式下二极管只导通了很短的时间,且两次导通时间间隔很长,具有功耗低、输出纹波大的特点。

        当电路运行在连续导通模式下,当功率开关管导通时,电流由电源流向电感,持续时间为ton​​​​​​​​​​​​​​,电感开始充电并转换为磁能,直到功率开关管关闭。此时功率二极管截止,输出能量全部由输出电容提供。当功率开关管关闭后,电感由于之前被充电故有电流流过,会感应出电压让右侧二极管导通,此时电流流经电感和功率二极管,而不经过功率开关管。此时电感释放能量,储能电感像一个电池和串联为负载供电,持续时间为toff。这时负载由输出电容和功率二极管​​​​​​​提供电能。

4.列举熟悉的电路

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值