腾讯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秋招记录#
全部评论

相关推荐

微信小程序的开发使用了 MINA 框架(Minimalist Approach),这是一个专门为微信小程序设计的高性能框架,主要目的是提供更好的开发体验和性能表现。以下是对微信小程序 MINA 框架原生开发的回顾,包括其架构、特性以及使用示例等内容。1. MINA 框架架构MINA 框架的架构主要由以下几部分组成:小程序逻辑层:负责处理业务逻辑,包括数据请求、状态管理等,通常由 JavaScript 代码实现。小程序视图层:使用 WXML 和 WXSS 描述 UI 结构和样式,与 HTML 和 CSS 类似。小程序数据层:通过 API 调用获取和存储数据。2. 主要特性组件化开发:小程序支持将 UI 和逻辑拆分为可复用的组件,提高了代码的复用性和可维护性。数据绑定:采用双向数据绑定机制,使得 UI 和数据模型保持同步,简化了开发过程。良好的性能:MINA 框架针对小程序的特性进行了优化,提供了高效的渲染和交互性能。丰富的 API 接口:提供了丰富的原生 API 接口,包括网络请求、文件管理和多媒体等,方便开发者进行各种操作。多种开发工具:微信开发者工具提供了调试、预览和打包等功能,提升了开发效率。3. 开发流程:https://www.nowcoder.com/issue/tutorial?zhuanlanId=j572L2&uuid=478c9885c4a9463fad6a2e9d7c1ff512
点赞 评论 收藏
分享
评论
3
8
分享

创作者周榜

更多
牛客网
牛客企业服务