景嘉微在线测评(笔试)+ 线下一二三面

邮件写的是在线测评,实际就是笔试,投的AI算法,来的全是C的题,非常基础,1个小时,42个题,17个单选,6个多选,4个填空,12个判断,3个编程;

1、linux的memory section包括:代码段、数据段BSS、堆heap、栈stack、环境变量和参数字符串、映射文件;

2、linux可执行文件格式:COFF;EXE、MSI都是Windows下的;GO是GO编译器下的;

3、C语言是静态语言;

4、int a[3][4]的非法引用是:a[0][4];

5、静态变量在函数外部和全局变量生命周期相同,在函数内部,初始化一次调用一次;

6、函数int func(int i,int j);函数指针int(*P)(int i,int j);那么P的赋值语句是P=func;

7、"ffff"是字符串,每个字符1个字节+末尾‘/0’1个字节;(unsigned int)0xffffffff占4个字节;(int)0xffffffff占4个字节;(char)0xffffffff占1个字节;

8、指向数组的指针将指向数组的首地址;通过++操作可以向后平移;

9、初始化二维数组时可以不写行数,但不能不写列数;规定了行数和列数就必须全部填充值,不能缺失;

10、略;

11、在C语言中,函数的参数传递方式主要有两种:值传递和指针传递

12、略;

13、联合体union的大小由最大内存占用成员决定;32位中int和float占4字节,double占8字节;struct则是将所包含的内容字节数相加;

14、VxWorkersOS是美国的嵌入式操作系统;ACoreOS天脉和ReworksOS和SylixOS翼辉是国产操作系统;

15、3A*124=446C是14进制;

16、char str1[6]="abcdm";*str2="abcdef";那么strcmp(str1,str2)将逐个位置对比,因为m>e,所以返回大于0;strlen(str1)=5;strcpy(str1,str2)是错误的;

17、要对绝对地址0x100000赋值,可以用*(unsigned int*)0x100000=1234;那么要是想让程序跳转到0x100000去执行(无参数、无返回值)应该使用((void(*)())0x100000)();

18、c语言的合法整数:0Xffa、0386、10110;x2a2不是;

19、指针初始化为内存地址int *ptr = (int *)0x12345678;int *ptr[3]指针数组,数组内是指针;char *ptr就是字符串数组;

20、以太网利用ARP协议获得目的主机MAC地址和IP地址的映射关系;

21、一维数组初始化可以不用填充满,会自动补0,二维数组就不行了;

22、对于一个互斥信号量来说,常用的操作接口有创建、释放、等待;

23、嵌入式操作系统中,任务之间的通信方式有信号量、共享内存;

24、局部变量在栈区、全局变量在静态存储区、动态申请在堆区;

25、int b[90];则sizeof(b)是360;

26、int (*func)(int)表示一个指向函数的指针,该函数有一个整型参数并返回一个整型;

27、10人20h可以挖5m,那么10h挖20m需要80人;

28、int指针a,++后地址应该是+4字节;

29、const char *a="hello";那么sizeof(a)并不是表示字符串数组的内存占用5+1=6个字节,而是指针的内存占用,32位是4个字节,64位是8个字节;

30、在C语言中,i++ 是一个后缀递增运算符,它本身并不是一个完整的赋值语句;

31、取地址运算符&和指针运算符*优先级是不同的,取地址优先级更高,结合方向是自右向左;

32、dma传输数据需要考虑cache一致性问题;

33、在c语言中if(x==5)误写成了if(x=5)并不会编译错误;

34、float a;a=5;不会触发类型转换;

35、for循环中i++和++i是一样的;

36、中断服务器中可以使用printf,但需要谨慎;

37、浮点数的==判断可能不一定完全相同;

38、c语言中%10.4表示数据输出的最小宽度为10,小数位数为4;

39、cache的最小操作单位不是1字节,常见的有32、64、128字节;

40、编程:考察字符数组最后要用‘\0’结尾;

41、编程:c语言移动字符数组;

答案:

void LoopMove(char* pStr, int steps) {

    if (pStr == NULL || steps <= 0) {

        return;

    }

    

    int len = strlen(pStr);

    if (len == 0) {

        return;

    }

    

    steps = steps % len; // 若steps大于字符串长度,则取余数

    if (steps == 0) {

        return;

    }

    

    char temp[255]; // 假设字符串长度不会超过255

    strncpy(temp, pStr + len - steps, steps); // 拷贝最后steps个字符到临时数组

    memmove(pStr + steps, pStr, len - steps);// 将前面的字符向右移动

    memcpy(pStr, temp, steps); // 将临时数组中的字符拷贝到字符串开头

}

42、编程:识别16进制数,并转为数据;

答案:

// 检查字符是否为16进制字符

int IsHexChar(char c) {

    return (c >= '0' && c <= '9') ||

    (c >= 'A' && c <= 'F') ||

    (c >= 'a' && c <= 'f');

}

// 16进制字符串转换为数据

bool HexStringToData(const char* pStr, unsigned char* pData, size_t* pDataSize) {

    if (pStr == NULL || pData == NULL || pDataSize == NULL) {

        // 参数错误

        return false;

    }

    int dataSize = 0;

    // 检查字符串是否以 "0x" 或 "0X" 开头

    if (pStr[0] == '0' && (pStr[1] == 'x' || pStr[1] == 'X')) {

        // 跳过前缀 "0x" 或 "0X"

        const char* pHex = pStr + 2;

        

        

        // 逐个字符转换

        while (*pHex) {

            if (IsHexChar(*pHex)) {

                int highDigit = -1;

                if (*pHex >= '0' && *pHex <= '9') {

                    highDigit = *pHex - '0';

                } else if (*pHex >= 'A' && *pHex <= 'F') {

                    highDigit = *pHex - 'A' + 10;

                } else if (*pHex >= 'a' && *pHex <= 'f') {

                    highDigit = *pHex - 'a' + 10;

                }

 pHex++;

                if (*pHex) {

                    int lowDigit = -1;

                    if (*pHex >= '0' && *pHex <= '9') {

                        lowDigit = *pHex - '0';

                    } else if (*pHex >= 'A' && *pHex <= 'F') {

                        lowDigit = *pHex - 'A' + 10;

                    } else if (*pHex >= 'a' && *pHex <= 'f') {

                        lowDigit = *pHex - 'a' + 10;

                    }

                    

                    if (lowDigit != -1) {

                        // 将两个16进制数字组合成一个字节

                        pData[dataSize++] = (unsigned char)(highDigit * 16 + lowDigit);

                        pHex++;

                    } else {

                        // 无效字符

                        return false;

                    }

                } else {

                    // 奇数个16进制字符

                    return false;

                }

            } else {

                // 无效的16进制字符

                return false;

            }

        }

    } else {

        // 不是以 "0x" 或 "0X" 开头

        return false;

    }

    

    *pDataSize = dataSize;

    return true;}

------------------------------更重要的来了,线下的一二三面-----------------------------------

一面:技术,2v1,我面的算法岗位分芯片和寄存两个分支,全程拷打项目,无手撕无八股,时间30分钟以内,也唠唠家常,面试官没有为难,偏底层的芯片面试官应该是没看上,偏算法的寄存这边评价稍微高点,全程面试官手写评价,从简历里面挑重点抄;

二面:项目部,2v1,同样是芯片和寄存,基本就是唠家常,问一下面对困难,薪资不满意、工作强度高等等可能的职场问题,没有技术问题,半小时以内;

三面:hr,1v1,再次询问情况,询问最低签约报价等等,反问了一下组织架构,芯片方面研发大约是200人,算法需求少,寄存方向研发大概是100多人,ai算法暂时没有独立成组,就是博士带队几个人,优先招博士。

---------------------------offer--------------------------------

offer比报价高,额外有安家费,5年拿满,要求2天回复是否签约,3天寄出三方,逼签比较严重,准备拒了。

全部评论
老哥,景嘉微hr说你期望薪资的时候最低说的多少呀,昨天面试说的18k,这是报高了还是中规中矩
点赞 回复 分享
发布于 2024-10-11 12:00 四川

相关推荐

说下我的情况,高考日语生,日语n2左右水平,但是今年jlpt报名没抢到考场,学校很垃圾,只想着找个对日的公司,练练口语后续润日本,简历就是烂大街的外卖+点评,面试前做了个日语测试(和jlpt一样),考了120多一点,然后说是项目很忙,技术面拖了很久📍面试公司:无锡海隆💻面试岗位:对日软件工程师❓面试问题:1.先问了日语水平,2.两道八股,背的很熟练,3.数据结构的栈和队列4.tcp和udp的区别,不会5.前端学的怎么样,去年学的了,忘得差不多6.表单是什么标签,忘了7.vue的特点,忘得差不多了,回答把前端三大件融合到一起(记不得了,跟着印象瞎说的)8.jdbc会不会,不会9.代码分为哪几层,controller,service,map,还有个放工具类的util10.修改redis的方法,Redistemple类,按照不同的格式string,hash等找对应的方法11.redis是做什么用的,缓存一些常用信息,减轻数据库压力,记录一些小的数据12.看你用到了jwt,jwt分为哪几个部分,主体,签名,时间戳,自定义的键值对(忘完了,根据残存的记忆瞎说的)13.spring的特点,ioc和di🙌面试感想:面试结束我心都凉了,代码很久没看过了基本都忘完了,就会点八股,面试说的最多的就是不会,记不清了,没想到周一就跟我说通过了,可能是看中我有日语基础不用培训六个月了吧,再加上对日本来要求就低
查看13道真题和解析
点赞 评论 收藏
分享
06-27 15:33
已编辑
门头沟学院 Web前端
一面&nbsp;1h10min&nbsp;6.201、语义化为了什么,语义化在你的项目中,你做了什么?2、有两种盒模型,你说说看,这两种盒模型有什么区别,在开发过程中,使用到的是哪种盒模型?3、怎么去清除浮动?4、css选择器了解过吗,说一下权重。给同一div加上先绑定id,使用id选择器给红色,使用类选择器给绿色,最终显示什么颜色。5、css样式,a元素给了相对定位,z-index是1;b元素给了相对定位,z-index是2,c也给了相对定位,z-index是3,c他会覆盖b吗6、css模块化有了解吗?7、BFC范式了解过吗,如何创建一个BFC8、原型链了解过吗?说说看?9、函数里面创建了一个变量a并赋值,然后再把a赋值成方法,输出a,结果是什么?10、讲一下前公司开发具体流程吧11、异步编程说一下12、讲一下这个事件循环13、ajax用过吗,平时用什么?14、js的数据类型知道吗?如何判断数据类型?15、作用域了解过吗?var声明和let声明执行相关的问题?16、用class创建一个类,类里面创建一个方法fn(),方法输出console.log(this)。创建这个实例,然后调用这个实例.fn(),结果是什么?再把这个实例.fn赋值给一个变量,然后执行这个变量,输出又是什么?17、this指针了解过吗?改变指针的有哪些方法?说一下箭头函数的this18、讲一下闭包?作用?19、讲一个开发中最大收获吧20、浏览器了解吗,解释一下url输入到浏览器的过程?21、讲一下浏览器的控制台工具都有哪些吧,有什么功能说一说22、页面的性能优化怎么做?23、代码规范是怎么实现的?24、开发过程中,遇见问题怎么做?25、有没有开源项目,说一下26、未来一两年的规划?27、你觉得你在开发过程中遇到的开发过程遇到的最兴奋的点是什么?28、加班问题怎么看29、自身优缺点说一下30、如果领导跟你的意见不合,你会怎么做。31、面试官:如果我想让你做坏一个项目,你会怎么做?我:啊?来真的啊。嘿嘿反问:1、公司干的什么活?给机器人做中控系统,vue去实现对机器人的操控页面。2、结果?三天内6.25&nbsp;二面&nbsp;CTO面问我职业发展规划;起冲突了怎么解决;数学建模比赛的课题是什么,做的什么内容。反问:做什么业务?对发布出去的机器人软件更新,以及对后续机器人的软件开发。&nbsp;使用vue3进行对机器人中控页面的性能优化等等6.27&nbsp;oc
大族机器人二面2人在聊
点赞 评论 收藏
分享
评论
3
10
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务