欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

【秋招】嵌入式面試八股文 - Modbus 協(xié)議篇

【秋招】嵌入式面試八股文 - 最全專(zhuān)欄

1. Modbus基礎(chǔ)概念

Q: 什么是Modbus協(xié)議?它有哪些特點(diǎn)?

:Modbus是一種應(yīng)用層通信協(xié)議,最初由Modicon(現(xiàn)為施耐德電氣)開(kāi)發(fā),用于可編程邏輯控制器(PLC)之間的通信。其主要特點(diǎn)包括:

  1. 主從架構(gòu):采用主從(Master-Slave)通信模式,一個(gè)主設(shè)備可以控制多個(gè)從設(shè)備
  2. 開(kāi)放標(biāo)準(zhǔn):公開(kāi)的協(xié)議規(guī)范,無(wú)需支付許可費(fèi)用
  3. 簡(jiǎn)單可靠:協(xié)議結(jié)構(gòu)簡(jiǎn)單,易于實(shí)現(xiàn)和調(diào)試
  4. 多種傳輸模式:支持RTU、ASCII和TCP等多種傳輸模式
  5. 廣泛應(yīng)用:在工業(yè)自動(dòng)化、能源管理、樓宇自動(dòng)化等領(lǐng)域廣泛應(yīng)用
  6. 多種物理層支持:可基于RS-232、RS-485、以太網(wǎng)等物理層實(shí)現(xiàn)

2. Modbus通信模式

Q: Modbus有哪幾種通信模式?它們有什么區(qū)別?

:Modbus主要有三種通信模式:

  1. Modbus RTU:使用二進(jìn)制編碼傳輸數(shù)據(jù)每個(gè)8位字節(jié)包含兩個(gè)4位十六進(jìn)制字符消息幀之間有靜默間隔(至少3.5個(gè)字符時(shí)間)使用CRC-16校驗(yàn)優(yōu)點(diǎn):數(shù)據(jù)緊湊,傳輸效率高應(yīng)用:基于RS-485/RS-232的串行通信
  2. Modbus ASCII:使用ASCII字符編碼傳輸數(shù)據(jù)每個(gè)字節(jié)用兩個(gè)ASCII字符表示消息以冒號(hào)(:)開(kāi)始,以回車(chē)換行(CR/LF)結(jié)束使用LRC校驗(yàn)優(yōu)點(diǎn):可讀性好,便于調(diào)試缺點(diǎn):傳輸效率低于RTU模式應(yīng)用:需要人工查看數(shù)據(jù)的場(chǎng)合
  3. Modbus TCP:基于TCP/IP協(xié)議使用MBAP(Modbus Application Protocol)頭部無(wú)需校驗(yàn)和(由TCP協(xié)議保證數(shù)據(jù)完整性)優(yōu)點(diǎn):可通過(guò)以太網(wǎng)傳輸,支持更高速率和更長(zhǎng)距離應(yīng)用:工廠自動(dòng)化網(wǎng)絡(luò)、遠(yuǎn)程監(jiān)控系統(tǒng)
// Modbus RTU幀格式
typedef struct {
    uint8_t slave_address;    // 從站地址(1-247)
    uint8_t function_code;    // 功能碼
    uint8_t data[253];        // 數(shù)據(jù)域(最大253字節(jié))
    uint16_t crc;             // CRC校驗(yàn)
} ModbusRTU_Frame;

// Modbus TCP幀格式
typedef struct {
    uint16_t transaction_id;  // 事務(wù)標(biāo)識(shí)符
    uint16_t protocol_id;     // 協(xié)議標(biāo)識(shí)符(0=Modbus)
    uint16_t length;          // 后續(xù)字節(jié)數(shù)
    uint8_t unit_id;          // 單元標(biāo)識(shí)符(相當(dāng)于從站地址)
    uint8_t function_code;    // 功能碼
    uint8_t data[253];        // 數(shù)據(jù)域
} ModbusTCP_Frame;


3. Modbus功能碼

Q: Modbus常用的功能碼有哪些?它們的作用是什么?

:Modbus常用功能碼及其作用:

  1. 讀取類(lèi)功能碼:01 (0x01): 讀取線圈狀態(tài)(Read Coil Status)用于讀取離散輸出(DO)的狀態(tài)(單個(gè)位)可讀取多個(gè)連續(xù)的線圈02 (0x02): 讀取輸入狀態(tài)(Read Input Status)用于讀取離散輸入(DI)的狀態(tài)(單個(gè)位)只讀,不可寫(xiě)入03 (0x03): 讀取保持寄存器(Read Holding Registers)用于讀取可讀寫(xiě)的16位寄存器通常用于存儲(chǔ)設(shè)置值、控制參數(shù)等04 (0x04): 讀取輸入寄存器(Read Input Registers)用于讀取只讀的16位寄存器通常用于存儲(chǔ)測(cè)量值、狀態(tài)信息等
  2. 寫(xiě)入類(lèi)功能碼:05 (0x05): 寫(xiě)單個(gè)線圈(Write Single Coil)用于控制單個(gè)離散輸出數(shù)據(jù)值為0x0000(關(guān)閉)或0xFF00(打開(kāi))06 (0x06): 寫(xiě)單個(gè)寄存器(Write Single Register)用于寫(xiě)入單個(gè)16位寄存器15 (0x0F): 寫(xiě)多個(gè)線圈(Write Multiple Coils)用于同時(shí)控制多個(gè)離散輸出16 (0x10): 寫(xiě)多個(gè)寄存器(Write Multiple Registers)用于同時(shí)寫(xiě)入多個(gè)16位寄存器
  3. 診斷類(lèi)功能碼:07 (0x07): 讀取異常狀態(tài)(Read Exception Status)08 (0x08): 診斷(Diagnostics)17 (0x11): 報(bào)告從站ID(Report Slave ID)
// 功能碼使用示例 - 讀取保持寄存器
uint8_t read_holding_register(uint8_t slave_addr, uint16_t reg_addr, uint16_t reg_count, uint16_t *data) {
    uint8_t send_buf[8];
    uint8_t recv_buf[256];
    
    // 構(gòu)建請(qǐng)求幀
    send_buf[0] = slave_addr;         // 從站地址
    send_buf[1] = 0x03;               // 功能碼:讀取保持寄存器
    send_buf[2] = reg_addr >> 8;      // 寄存器地址高字節(jié)
    send_buf[3] = reg_addr & 0xFF;    // 寄存器地址低字節(jié)
    send_buf[4] = reg_count >> 8;     // 寄存器數(shù)量高字節(jié)
    send_buf[5] = reg_count & 0xFF;   // 寄存器數(shù)量低字節(jié)
    
    // 計(jì)算CRC
    uint16_t crc = ModbusCRC16(send_buf, 6);
    send_buf[6] = crc & 0xFF;         // CRC低字節(jié)
    send_buf[7] = crc >> 8;           // CRC高字節(jié)
    
    // 發(fā)送請(qǐng)求并接收響應(yīng)
    // ...
    
    // 解析響應(yīng)
    if (recv_buf[0] != slave_addr || recv_buf[1] != 0x03) {
        return MODBUS_ERROR;
    }
    
    uint8_t byte_count = recv_buf[2];
    for (int i = 0; i < reg_count; i++) {
        data[i] = (recv_buf[3 + i*2] << 8) | recv_buf[4 + i*2];
    }
    
    return MODBUS_OK;
}


4. Modbus數(shù)據(jù)模型

Q: Modbus的數(shù)據(jù)模型是什么?四種數(shù)據(jù)類(lèi)型有什么區(qū)別?

:Modbus定義了四種主要的數(shù)據(jù)類(lèi)型(表),每種類(lèi)型對(duì)應(yīng)不同的功能碼:

  1. 線圈(Coils):1位(二進(jìn)制)數(shù)據(jù),可讀可寫(xiě)對(duì)應(yīng)功能碼:01(讀)、05(寫(xiě)單個(gè))、15(寫(xiě)多個(gè))地址范圍:00001-09999典型應(yīng)用:控制輸出,如繼電器、指示燈等
  2. 離散輸入(Discrete Inputs):1位(二進(jìn)制)數(shù)據(jù),只讀對(duì)應(yīng)功能碼:02(讀)地址范圍:10001-19999典型應(yīng)用:狀態(tài)輸入,如開(kāi)關(guān)狀態(tài)、傳感器觸點(diǎn)等
  3. 輸入寄存器(Input Registers):16位(字)數(shù)據(jù),只讀對(duì)應(yīng)功能碼:04(讀)地址范圍:30001-39999典型應(yīng)用:測(cè)量值,如溫度、壓力、流量等
  4. 保持寄存器(Holding Registers):16位(字)數(shù)據(jù),可讀可寫(xiě)對(duì)應(yīng)功能碼:03(讀)、06(寫(xiě)單個(gè))、16(寫(xiě)多個(gè))地址范圍:40001-49999典型應(yīng)用:設(shè)置值、控制參數(shù)等
// Modbus數(shù)據(jù)模型實(shí)現(xiàn)示例
typedef struct {
    // 線圈 - 可讀寫(xiě)的位數(shù)據(jù)
    uint8_t coils[1000/8];            // 1000個(gè)線圈,每8個(gè)占用1字節(jié)
    
    // 離散輸入 - 只讀的位數(shù)據(jù)
    uint8_t discrete_inputs[1000/8];  // 1000個(gè)離散輸入
    
    // 輸入寄存器 - 只讀的字?jǐn)?shù)據(jù)
    uint16_t input_registers[1000];   // 1000個(gè)輸入寄存器
    
    // 保持寄存器 - 可讀寫(xiě)的字?jǐn)?shù)據(jù)
    uint16_t holding_registers[1000]; // 1000個(gè)保持寄存器
} ModbusDataModel;

// 訪問(wèn)數(shù)據(jù)模型的函數(shù)
uint8_t get_coil_status(ModbusDataModel *model, uint16_t address) {
    if (address >= 1000) return 0;
    return (model->coils[address/8] >> (address%8)) & 0x01;
}

void set_coil_status(ModbusDataModel *model, uint16_t address, uint8_t status) {
    if (address >= 1000) return;
    if (status)
        model->coils[address/8] |= (1 << (address%8));
    else
        model->coils[address/8] &= ~(1 << (address%8));
}


5. Modbus通信過(guò)程

Q: 描述一下Modbus的通信過(guò)程,主站和從站如何交互?

:Modbus的通信過(guò)程遵循主從模式,基本流程如下:

  1. 請(qǐng)求-響應(yīng)模式:主站發(fā)起請(qǐng)求,從站響應(yīng)每個(gè)請(qǐng)求只能有一個(gè)響應(yīng)主站負(fù)責(zé)超時(shí)檢測(cè)和重試
  2. RTU/ASCII模式通信過(guò)程:主站構(gòu)建請(qǐng)求幀(地址、功能碼、數(shù)據(jù)、校驗(yàn))主站發(fā)送請(qǐng)求幀到總線所有從站接收請(qǐng)求幀目標(biāo)從站(地址匹配)處理請(qǐng)求從站構(gòu)建響應(yīng)幀從站發(fā)送響應(yīng)幀主站接收并處理響應(yīng)幀
  3. TCP模式通信過(guò)程:主站與從站建立TCP連接主站構(gòu)建MBAP頭部和PDU(功能碼+數(shù)據(jù))主站發(fā)送請(qǐng)求從站接收并處理請(qǐng)求從站構(gòu)建響應(yīng)從站發(fā)送響應(yīng)主站接收并處理響應(yīng)
  4. 異常處理:如果從站無(wú)法正常處理請(qǐng)求,會(huì)返回異常響應(yīng)異常響應(yīng)的功能碼為原功能碼+0x80異常響應(yīng)包含異常碼,指示錯(cuò)誤類(lèi)型
// Modbus主站請(qǐng)求示例
void modbus_master_request(uint8_t slave_addr, uint8_t function_code, uint16_t start_addr, uint16_t count) {
    uint8_t request[256];
    uint8_t req_len = 0;
    
    // 構(gòu)建請(qǐng)求幀頭
    request[req_len++] = slave_addr;
    request[req_len++] = function_code;
    request[req_len++] = start_addr >> 8;
    request[req_len++] = start_addr & 0xFF;
    request[req_len++] = count >> 8;
    request[req_len++] = count & 0xFF;
    
    // 添加CRC校驗(yàn)
    uint16_t crc = ModbusCRC16(request, req_len);
    request[req_len++] = crc & 0xFF;
    request[req_len++] = crc >> 8;
    
    // 發(fā)送請(qǐng)求
    uart_send_data(request, req_len);
    
    // 等待響應(yīng)
    uint8_t response[256];
    uint8_t resp_len = 0;
    
    if (wait_for_response(response, &resp_len, 1000)) {  // 1000ms超時(shí)
        // 處理響應(yīng)
        process_response(response, resp_len);
    } else {
        // 超時(shí)處理
        handle_timeout(slave_addr, function_code);
    }
}

// Modbus從站響應(yīng)示例
void modbus_slave_process(uint8_t *request, uint8_t req_len) {
    // 檢查地址是否匹配
    if (request[0] != slave_address && request[0] != 0) {
        return;  // 不是發(fā)給本機(jī)的請(qǐng)求
    }
    
    // 驗(yàn)證CRC
    uint16_t received_crc = (request[req_len-1] << 8) | request[req_len-2];
    uint16_t calculated_crc = ModbusCRC16(request, req_len-2);
    if (received_crc != calculated_crc) {
        return;  // CRC錯(cuò)誤
    }
    
    uint8_t function_code = request[1];
    uint16_t start_addr = (request[2] << 8) | request[3];
    uint16_t count = (request[4] << 8) | request[5];
    
    // 根據(jù)功能碼處理請(qǐng)求
    switch (function_code) {
        case 0x03:  // 讀保持寄存器
            handle_read_holding_registers(request, req_len);
            break;
        case 0x06:  // 寫(xiě)單個(gè)寄存器
            handle_write_single_register(request, req_len);
            break;
        // 其他功能碼處理...
        default:
            // 不支持的功能碼,返回異常
            send_exception_response(function_code, 0x01);
            break;
    }
}


6. Modbus校驗(yàn)機(jī)制

Q: Modbus的校驗(yàn)機(jī)制有哪些?如何實(shí)現(xiàn)CRC16校驗(yàn)?

:Modbus的校驗(yàn)機(jī)制根據(jù)通信模式不同而不同:

  1. RTU模式校驗(yàn):使用CRC-16(循環(huán)冗余校驗(yàn))多項(xiàng)式:x^16 + x^15 + x^2 + 1(0xA001)初始值:0xFFFF校驗(yàn)范圍:從站地址到數(shù)據(jù)字段的所有字節(jié)校驗(yàn)結(jié)果:兩個(gè)字節(jié),低字節(jié)在前,高字節(jié)在后
  2. ASCII模式校驗(yàn):使用LRC(縱向冗余校驗(yàn))計(jì)算方法:將所有字節(jié)相加,取二進(jìn)制反碼(補(bǔ)碼)校驗(yàn)范圍:從站地址到數(shù)據(jù)字段的所有字節(jié)校驗(yàn)結(jié)果:一個(gè)字節(jié),用兩個(gè)ASCII字符表示
  3. TCP模式:無(wú)需額外校驗(yàn),依靠TCP協(xié)議的校驗(yàn)機(jī)制

CRC16校驗(yàn)算法實(shí)現(xiàn):

// Modbus RTU CRC16校驗(yàn)算法
uint16_t ModbusCRC16(uint8_t *data, uint16_t length) {
    uint16_t crc = 0xFFFF;  // 初始值
    
    for (uint16_t i = 0; i < length; i++) {
        crc ^= (uint16_t)data[i];  // 異或當(dāng)前字節(jié)
        
        for (uint8_t j = 0; j < 8; j++) {
            if (crc & 0x0001) {
                crc >>= 1;
                crc ^= 0xA001;  // 多項(xiàng)式0xA001
            } else {
                crc >>= 1;
            }
        }
    }
    
    return crc;
}

// Modbus ASCII LRC校驗(yàn)算法
uint8_t ModbusLRC(uint8_t *data, uint16_t length) {
    uint8_t lrc = 0;  // 初始值為0
    
    for (uint16_t i = 0; i < length; i++) {
        lrc += data[i];  // 累加所有字節(jié)
    }
    
    return (uint8_t)(-((int8_t)lrc));  // 取二進(jìn)制反碼
}


7. Modbus異常處理

Q: Modbus的異常處理機(jī)制是什么?常見(jiàn)的異常碼有哪些?

:Modbus的異常處理機(jī)制如下:

  1. 異常響應(yīng)格式:功能碼:原功能碼+0x80(最高位置1)數(shù)據(jù)域:包含一個(gè)異常碼例如:請(qǐng)求功能碼0x03,異常響應(yīng)功能碼為0x83
  2. 常見(jiàn)異常碼:0x01:非法功能碼(Illegal Function)從站不支持請(qǐng)求的功能碼0x02:非法數(shù)據(jù)地址(Illegal Data Address)請(qǐng)求的數(shù)據(jù)地址不存在或超出范圍0x03:非法數(shù)據(jù)值(Illegal Data Value)請(qǐng)求的數(shù)據(jù)值不合法(如超出允許范圍)0x04:從站設(shè)備故障(Slave Device Failure)從站在處理請(qǐng)求時(shí)發(fā)生內(nèi)部錯(cuò)誤0x05:確認(rèn)(Acknowledge)從站接受請(qǐng)求,但需要較長(zhǎng)時(shí)間處理0x06:從站設(shè)備忙(Slave Device Busy)從站正在處理長(zhǎng)時(shí)間命令,請(qǐng)求稍后重試0x08:內(nèi)存奇偶校驗(yàn)錯(cuò)誤(Memory Parity Error)從站檢測(cè)到擴(kuò)展內(nèi)存的奇偶校驗(yàn)錯(cuò)誤0x0A:網(wǎng)關(guān)路徑不可用(Gateway Path Unavailable)用于網(wǎng)關(guān),表示網(wǎng)關(guān)無(wú)法路由請(qǐng)求0x0B:網(wǎng)關(guān)目標(biāo)設(shè)備無(wú)響應(yīng)(Gateway Target Device Failed to Respond)用于網(wǎng)關(guān),表示目標(biāo)設(shè)備無(wú)響應(yīng)
  3. 異常處理實(shí)現(xiàn):
// 異常響應(yīng)生成函數(shù)
void send_exception_response(uint8_t function_code, uint8_t exception_code) {
    uint8_t response[5];
    
    response[0] = slave_address;
    response[1] = function_code | 0x80;  // 設(shè)置最高位
    response[2] = exception_code;
    
    // 計(jì)算CRC
    uint16_t crc = ModbusCRC16(response, 3);
    response[3] = crc & 0xFF;
    response[4] = crc >> 8;
    
    // 發(fā)送異常響應(yīng)
    uart_send_data(response, 5);
}

// 異常處理示例
void handle_read_holding_registers(uint8_t *request, uint8_t req_len) {
    uint16_t start_addr = (request[2] << 8) | request[3];
    uint16_t reg_count = (request[4] << 8) | request[5];
    
    // 檢查地址范圍
    if (start_addr + reg_count > MAX_HOLDING_REGISTERS) {
        send_exception_response(0x03, 0x02);  // 非法數(shù)據(jù)地址
        return;
    }
    
    // 檢查寄存器數(shù)量
    if (reg_count == 0 || reg_count > 125) {
        send_exception_response(0x03, 0x03);  // 非法數(shù)據(jù)值
        return;
    }
    
    // 正常處理...
}


8. Modbus超時(shí)和重試機(jī)制

Q: 如何在Modbus通信中實(shí)現(xiàn)超時(shí)檢測(cè)和重試機(jī)制?

:Modbus通信中的超時(shí)檢測(cè)和重試機(jī)制實(shí)現(xiàn):

  1. 超時(shí)檢測(cè):主站發(fā)送請(qǐng)求后啟動(dòng)計(jì)時(shí)器如果在預(yù)定時(shí)間內(nèi)未收到響應(yīng),則判定為超時(shí)超時(shí)時(shí)間設(shè)置應(yīng)考慮通信速率、網(wǎng)絡(luò)延遲等因素
  2. 重試機(jī)制:發(fā)生超時(shí)后,可以重新發(fā)送請(qǐng)求設(shè)置最大重試次數(shù),避免無(wú)限重試多次重試失敗后,通知上層應(yīng)用通信故障
  3. 實(shí)現(xiàn)方法:
#define MODBUS_TIMEOUT_MS 1000  // 超時(shí)時(shí)間1秒
#define MAX_RETRIES 3           // 最大重試次數(shù)

// 帶重試的Modbus請(qǐng)求函數(shù)
bool modbus_request_with_retry(uint8_t slave_addr, uint8_t function_code, 
                              uint16_t start_addr, uint16_t count, uint8_t *response, uint8_t *resp_len) {
    uint8_t retries = 0;
    bool success = false;
    
    while (retries < MAX_RETRIES && !success) {
        // 發(fā)送請(qǐng)求
        send_modbus_request(slave_addr, function_code, start_addr, count);
        
        // 等待響應(yīng),帶超時(shí)
        uint32_t start_time = get_system_time_ms();
        while ((get_system_time_ms() - start_time) < MODBUS_TIMEOUT_MS) {
            if (uart_data_available()) {
                // 接收并處理響應(yīng)
                if (receive_modbus_response(response, resp_len)) {
                    success = true;
                    break;
                }
            }
            // 短暫延時(shí),避免CPU占用過(guò)高
            delay_ms(1);
        }
        
        if (!success) {
            retries++;
            log_message("Modbus request timeout, retry %d/%d", retries, MAX_RETRIES);
        }
    }
    
    if (!success) {
        log_message("Modbus communication failed after %d retries", MAX_RETRIES);
    }
    
    return success;
}


  1. 超時(shí)時(shí)間優(yōu)化: 根據(jù)通信速率計(jì)算理論響應(yīng)時(shí)間考慮網(wǎng)絡(luò)延遲和從站處理時(shí)間可以實(shí)現(xiàn)自適應(yīng)超時(shí)機(jī)制
// 自適應(yīng)超時(shí)計(jì)算
uint32_t calculate_timeout(uint8_t function_code, uint16_t data_count) {
    // 基本超時(shí)時(shí)間
    uint32_t base_timeout = 100;  // 100ms基礎(chǔ)時(shí)間
    
    // 根據(jù)功能碼和數(shù)據(jù)量調(diào)整超時(shí)時(shí)間
    switch (function_code) {
        case 0x01:  // 讀線圈
        case 0x02:  // 讀離散輸入
            return base_timeout + data_count * 1;  // 每個(gè)位增加1ms
            
        case 0x03:  // 讀保持寄存器
        case 0x04:  // 讀輸入寄存器
            return base_timeout + data_count * 2;  // 每個(gè)寄存器增加2ms
            
        case 0x0F:  // 寫(xiě)多個(gè)線圈
        case 0x10:  // 寫(xiě)多個(gè)寄存器
            return base_timeout + data_count * 5;  // 寫(xiě)操作需要更多時(shí)間
            
        default:
            return base_timeout + 500;  // 其他功能碼使用較長(zhǎng)超時(shí)
    }
}


9. Modbus TCP特性

Q: Modbus TCP與Modbus RTU有什么區(qū)別?如何處理Modbus TCP的網(wǎng)絡(luò)故障?

:Modbus TCP與Modbus RTU的區(qū)別及網(wǎng)絡(luò)故障處理:

  1. 主要區(qū)別:幀格式:RTU:使用從站地址、功能碼、數(shù)據(jù)、CRC校驗(yàn)TCP:使用MBAP頭部(事務(wù)ID、協(xié)議ID、長(zhǎng)度、單元ID)、功能碼、數(shù)據(jù)傳輸媒介:RTU:通?;赗S-485/RS-232串行通信TCP:基于以太網(wǎng)TCP/IP通信校驗(yàn)機(jī)制:RTU:使用CRC-16校驗(yàn)TCP:依靠TCP協(xié)議的校驗(yàn)機(jī)制,無(wú)需額外校驗(yàn)尋址方式:RTU:使用從站地址

剩余60%內(nèi)容,訂閱專(zhuān)欄后可繼續(xù)查看/也可單篇購(gòu)買(mǎi)

【秋招】嵌入式八股文最全總結(jié) 文章被收錄于專(zhuān)欄

雙非本,211碩。本碩均為機(jī)械工程,自學(xué)嵌入式,在校招過(guò)程中拿到小米、格力、美的、比亞迪、海信、???、大華、江波龍等offer。八股文本質(zhì)是需要大家理解,因此里面的內(nèi)容一定要詳細(xì)、深刻!這個(gè)專(zhuān)欄是我個(gè)人的學(xué)習(xí)筆記總結(jié),是對(duì)很多面試問(wèn)題進(jìn)行的知識(shí)點(diǎn)分析,專(zhuān)欄保證高質(zhì)量,讓大家可以高效率理解與吸收里面的知識(shí)點(diǎn)!掌握這里面的知識(shí),面試絕對(duì)無(wú)障礙!

全部評(píng)論

相關(guān)推薦

評(píng)論
點(diǎn)贊
3
分享

創(chuàng)作者周榜

更多
正在熱議
更多
??途W(wǎng)
??推髽I(yè)服務(wù)