TP-LINK联洲提前批

TP-LINK联洲提前批

嵌入式软开岗位

一、笔试

在6-10下午宣讲会的时候投了简历,6-11 9:15收到笔试通知,拖到6-17上午才抽时间进行笔试,当日14:10收到一面通知

笔试分为四个部分,分别是专业知识、阅读理解、图表理解、找规律。

专业知识

时间:75分钟

内容:有选择题、简答题、编程题,可以来回翻阅检查。编程题调试的时候只会告诉你对不对,没法作为一个ide使用(可能是为了避免拿他跑选择和简答的答案吧)。基本都是比较简单的题,大多是一些语言特性,以至于做完都没什么印象……

  • 选择题:看程序选结果、fork返回值、死锁的条件……

  • 简答题:进程和线程的关系、看出代码错误,并改代码……

  • 编程题:字符串压缩、多进程编程(编写一个多进程程序,要求父进程读取文件,子进程输出行号和每行字符数)。

阅读理解

时间:10分钟,每一题都有单独的时间(大概60-90s)

内容:都是选择题,给一些小的段落,让你选段落大意之类的,总体难度不高,就是有时候时间不够。

图表理解

时间:10分钟,每一题都有单独的时间(大概60-90s)

内容:都是选择题,给一些图表,让你估算算增速之类的,选择一个最相近的,需要快速找到对应数据进行估算,因为计算来不及。

图形推理

时间:10分钟,每一题都有单独的时间(大概60-90s)

内容:应该类似智商测试的题,给你一些图形,找出最符合规律的,题听难绷的,根本来不及……

二、一面

自我介绍、纯问项目,其他什么都没问,时间大概也就二十分钟的样子,非常愉快。
大概问了项目的实现、难点什么的。

三、二面

周五一面的,周一就约了周二的二面。
先进行自我介绍,然后问了下是考研还是保研的,看我有WiFi相关的经历,问我为什么选择嵌入式软件开发而不是无线。

项目拷打

  • 介绍下项目背景
  • 你在项目中做的是什么
  • 做了哪些改进
  • 是否有专利

手撕代码

题目是打印第三大数。

博主在大三ACM退役后到现在基本没写过算法题了,这几个月一直在做硬件/射频相关的项目,也没怎么写代码,翻车现场了属于是。
首先是前几天重装电脑,环境没配好,一直跑不起来,最后用命令行编译运行的;
然后是初始化的时候用了第一个数初始化,面试官问的时候我还信誓旦旦,结果被面试官hack了;
最后紧张的不行,把三个数排序也搞半天,感觉面完心凉了一截,我都不好意思说我有acm经历了……

八股

  • 输入www.tpliink.com会经历哪些层,使用哪些协议
    • 应用层(dns,http)、传输层(tcp)、网络层(arp)、物理层
    • 说是应用层外除了dns和http还用了什么,我不知道啊,提示说是在最内层报文的头部,面试官一脸失望
    • 我现在还是不知道少了什么
  • 三线程循环打印abc
    • 直说不会多线程编程
  • sizeof和strlen的区别,他们分别在哪一步生效
    • sizeof是计算占用空间,strlen计算字符串长度
    • sizeof在编译生效,strlen在运行时生效
  • 进程地址空间分为哪些部分
    • 内核
    • 栈:存放一些临时变量和函数之类的
    • 堆:malloc
    • bss:未初始化的静态变量和全局变量
    • data:初始化的静态变量和全局变量
    • test:代码段
  • static关键字
    • 修饰变量和函数,文件外不可通过extern使用
    • 函数内static,函数共用
    • c++ 静态成员,类共用
    • C++ 静态成员函数,可访问静态成员数据

四、三面

今天周四了,依然没收到面试通知,怕是凉了。

五、面试内容复盘

进程和线程的区别

多进程编程

编写一个多进程程序,要求父进程读取文件,子进程输出行号和每行字符数

考查进程创建和管理、进程间通信(例如pipe)、文件读写等内容

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/wait.h>
#include <unistd.h>

#define MAX_LINE_LENGTH 1024

int main() {
    int pipe_fd[2];
    pid_t pid;

    if (pipe(pipe_fd) == -1) {
        perror("pipe");
        exit(EXIT_FAILURE);
    }
    pid = fork();
    if (pid == -1) {
        perror("fork");
        exit(EXIT_FAILURE);
    } else if (pid != 0) {
        close(pipe_fd[0]);
        FILE *fd = fopen("data.txt", "r");
        if (!fd) {
            perror("fopen");
            exit(EXIT_FAILURE);
        }

        char buf[MAX_LINE_LENGTH];
        ssize_t bytes_read;

        while ((bytes_read = fread(buf, 1, MAX_LINE_LENGTH, fd)) > 0) {
            write(pipe_fd[1], buf, bytes_read);
        }

        fclose(fd);
        close(pipe_fd[1]);
        wait(NULL);
        return EXIT_SUCCESS;
    } else {
        close(pipe_fd[1]);

        char line[MAX_LINE_LENGTH];
        int line_number = 1;
        ssize_t bytes_read;
        int char_cnt = 0;

        while ((bytes_read = read(pipe_fd[0], line, MAX_LINE_LENGTH)) > 0) {
            for (int i = 0; i < bytes_read; ++i) {
                if (line[i] == '\n') {
                    printf("Line %d: %d characters\n", line_number, char_cnt);
                    line_number++;
                    char_cnt = 0;
                } else {
                    ++char_cnt;
                }
            }
        }
        if (char_cnt) {
            printf("Line %d: %d characters\n", line_number, char_cnt);
            char_cnt = 0;
        }
    }
    return 0;
}

posted @ 2025-06-19 22:28  treasurew_wang  阅读(122)  评论(0)    收藏  举报