腾讯qq部门客户端一二面(已挂)

省流:感觉没有客户端的经历,客户端的路应该是堵死了

流程:

投简历

测评

一面:当晚发二面

二面:三四天后挂

一面

  • c++多态:略
  • 动态链接、静态链接(过程、优缺点)
  • 动态库可以卸载吗?
  • 动态链接:多个动态库函数同名冲,有什么行为。

GNU 链接器(ld)会选择第一个遇到的符号定义,后面遇到的会忽略。(其实是按编译命令时,链接库的顺序来,如果A、B都有,并且先链接A,就会选择A的函数定义)。

解决方法:

  1. 可使用handle = dlopen("./libFuncA.so", RTLD_LAZY),显式指定要调用的动态库;该函数族需设定打开模式,返回一个动态库的句柄,调用句柄和函数进行操作,完成后需要关闭。
  2. 定义函数指针,在动态库中查找符号func = dlsym(handle, "sayOut")
  3. 关闭动态库句柄:dlclose(handle)

隐藏函数:

  1. __attribute__((visibility("hidden")))隐藏无关函数

hook函数:

  1. dlsym(RTLD_NEXT, #name)实现函数hook。name函数的定义在此之后的第一个。
  • 源代码变成二进制过程
  • new/delete和malloc/free

应该说上operator new和placement new的

  • free如何知道需要释放的内存大小

malloc(size)时,申请的空间肯定会大于size,因为需要一部分空间用来存放内存块元数据的结构体,通常位于返回指针的前面。其中元数据就包括内存块的真实大小。而且申请的空间一般是有规律的,比如最少申请24字节(包含元数据),向上取整8的倍数。可以通过malloc_usable_size来获取真实申请的大小。总大小 = size向上取整为8的倍数 + 8。free时,向指针往前偏移,就能获取内存块大小。

  • heap、stack
  • c‘s struct and cpp’s struct
  • 相同:都可以作为数据集合内存布局一样,按顺序
  • 不同:c++:可以有成员函数、继承、支持模板;c:没有

c++的struct和class:默认访问权限不同、默认继承权限不同

  • c++的内存分布
  • git回退命令\git的分布式怎么存储的
  • 进程和线程
  • 内存只有8g,做多可以申请多少内存
  • gpu、npu、人工智能芯片
  • 实习:缓存命中率、背景、指标衡量
  • 反问:建议实习过程中需要多些自己的思考

二面

  • 自我介绍、学习项目、经验
  • 说一个代表性的项目(一个智能协同的项目,比较简陋)
  • 实习内容(qemu嵌入式设备仿真)
  • 仿真系统是多少负责
  • 怎么分工
  • 最有难度的工作(新设备仿真)
  • 难度体现在哪?(新设备,需要查看日志、gdb调试)
  • 印象深刻的点?(coredump问题)
  • 怎么避免这种问题?(日志、有问题需要有中断程序)
  • 简历上的性能优化项目?(介绍tcg,介绍缓存刷新,自己的优化思路、效果)
  • 还有什么优化的方法?(线程绑核、添加内存、线程数)
  • 是否分析过,qemu仿真已经把机器的性能吃满(没正面回答,就说,由于需要在一个机器上多个仿真,所以不能吃满)
  • 有没有找到一个平衡点(根据启动时间来衡量)
  • 怎么想到这个优化点的(导师叮嘱需要留意,自己上网查找)
  • 还有继续优化的空间(有,但我的工作还是负责仿真实现)
  • 有设想过自己的工作内容(c++偏向的、比较底层)
  • 你觉得客户端有那些适合的(性能优化相关的)
  • 举个具体的例子(举不出来)
  • 经常使用的软件(移动端的购物app)
  • 使用过程中,发现什么问题吗?(卡死)
  • 什么会导致卡死(死锁)
  • 还有呢(内存不够、内存泄漏)
  • 为什么想报客户端?(胡言乱语)
  • 有了解过客户端的技术吗?(胡言乱语)
  • 有尝试过写客户端的软件吗?(web网页算吗)
  • 工作地点
  • 反问:工作内容:qq基础架构,客户端,基础架构,网络青睐的特性:没有固定的,根据候选人的简历来考察

#25秋招记录#
全部评论

相关推荐

牛客154160166号:9月底还给我发短信,好奇怪,我24届的
点赞 评论 收藏
分享
2 4 评论
分享
牛客网
牛客企业服务