金山WPS

收藏
工具
1000-9999人
上市
珠海/武汉/广州/北京
学历友好榜
榜单瞪羚企业榜单高新技术

0

在招职位

222

面试经验

24

真题试卷

查看官网
上传简历
此刻你想和大家分享什么
职位类型
全部
后端开发
最新
热门
5/8,18min,今天大早上给我发感谢信了,我还很奇怪我大部分都答得上来。大部分问题都是常见八股,智能指针、虚函数、大端小端、内存布局、map、inline没什么好讲的,主要是两个问题问到我了。1、如何获取虚函数指针vptr隐隐约约记得之前看过,但是忘了答不上来,大概就是:vptr是对象内存的第一个字段1)void** vptr = *(void***)ptr;//直接强制转换2)使用unionunion U {Base1* Ptr;void** Vptr;};一般情况到此为止了,但我气不过,仔细查了资料,发现这个问题本质上十分抽象。首先在ISO/IEC 14882 (C++标准)中,只描述了虚函数的行为,没有指定实现方式,之前了解到的vtable、对象内存布局,都是编译器开自己实现的,比如Itanium C++ ABI(GCC)文档:https://itanium-cxx-abi.github.io/cxx-abi/abi.html#vtable中就规定了使用vtable,MSVC貌似没直接说(https://learn.microsoft.com/en-us/cpp/cpp/virtual-functions?view=msvc-170),但调试发现跟GCC差不多,前面获取vptr的手段就是这么来的。问题就在这里了,获取vptr的方法是依赖于编译器实现细节而不是标准接口的,是一种非常危险的未定义行为,哪天编译器给你改了实现那程序通通都得爆炸😅(参考GCC 5.x ABI Break)2、关于shared_ptr基本原理:std::shared_ptr<T>内部指向一个控制块,包含引用计数器、对象的指针(T*)、析构器计数器的类型:通常是原子类型(atomic)多个 shared_ptr<T>,只要是从同一个源shared_ptr拷贝/赋值构造出来的,它们内部就指向同一份控制块。这个问题没什么好说的,单纯不会,但我怀疑这么问下去我是不是得把标准库源码都得看一遍😀。
金山WPS一面39人在聊 查看2道真题和解析
点赞 评论 收藏
分享
2024-12-06 20:46
中山大学 前端工程师
现在秋招已结束,整理发一些面经笔经,回馈一下牛客社区。2024.9.18今天晚上有WPS的笔试。现在随便做一套题热身一下罢了。看到有一题考事件流,我起初是懵逼的,因为不太清楚事件流是啥。稍微查了一下,原来是事件捕获和事件冒泡这些。今晚做了WPS的笔试,感觉怪怪的,有点难受。就是题目不难,但是总感觉有点不对。现在可以复盘一下:20道选择题,2道编程题选择题1. 动画 animation-timing-function 考得还挺细,有默认值和cubic-bezier的取值等2. React 渲染列表用的函数 选项有map,reduce等3. 表示范围内标量值的元素 , <meter>4. <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no,minimum-scale=1.0,maximum-scale=1.0"> 然后问一些问题5. 有序数组查找元素6. 原型 getter setter7. this指针8. webpack9. span CSS样式 默认宽高 float后的宽高10.  var 作用域11. AJAX12. CSS权重13. 同源14. class constructor Number[1]=123;1 in Object(1.0).constructor;15. link 和 @import16. Git 查看当前代码在git服务器的分支17. 文本域不支持的事件 onlostfocused onfocused onblur 18. 过滤数组好吧,有两个没记到。编程题,挺简单,没算法1. 把一个数转绝对值2. 把时间戳转为日期字符串
查看20道真题和解析 投递金山WPS等公司6个岗位
点赞 评论 收藏
分享
2024-12-27 23:30
已编辑
蚌埠坦克学院 C++
    ===============时间线====================12-03 一面12-05 二面12-13 HR面12-18 OC 12-27 收到签约邮件===============时间线====================12月12日更新,约HR面# 无自我介绍# 熟悉的C++版本C++11以后的基本都了解一些, 没有特别针对某个版本.# 智能指针1. `shared_ptr`: 支持拷贝、移动,可以作为返回值类型,避免大对象的拷贝. 引用计数是线程安全的2. `unique_ptr`:支持移动,可以通过转移所有权的方式,将对象的所有权转移给另一个独占指针3. `weak_ptr`: 支持拷贝,可以作为返回值类型,但是不能转移所有权,只能通过weak_ptr转成shared_ptr# gdb gcc有用过吗不怎么用gdb gcc有了解## gcc如何预处理忘了,回答gcc有参数控制```bashgcc -E main.c -o main.i```## 如何获取不进行链接的代码忘了,回答gcc有参数控制```bashgcc -c main.c -o main.o```# 线程安全的单例模式1. 通过C++11`std::call_once`实现2. 对指针判空执行两次,因为第一次判断为空后初始化前,可能其他线程已经初始化了,所以要两次判空问有没有其他的,回答原子变量应该也行,不是很了解。# 了解压缩算法吗不知道为啥问这个问题,面试官接着问是否了解哈夫曼,然后让讲一下自己了解的压缩算法。回答了科研做的图像压缩。# 项目## 项目结构略## 负载均衡怎么做的通过`roundRobin`方式实现,返回一个连接数量少的服务器;接着问道有考虑延迟吗,回答没有,因为是在单个机器测试的。## 单例模板基类是什么通过模板类是实现一个单例基类,子类通过CRTP的方式实现单例。## Qt键盘鼠标事件1. 键盘事件:`keyPressEvent` `keyReleaseEvent`2. 鼠标事件:`mousePressEvent` `mouseReleaseEvent` `mouseMoveEvent`# linux相关## docker如何建立目录映射回答,在创建容器时通过`-v`指定宿主目录和容器目录的映射关系。## top如何根据内存占用排序回答不知道,自己使用的基于top封装的btop,可以通过命令控制```bashtop -o %MEM```## 如何查找进程的句柄,回答不太了解。可以使用`ps`命令查询进程状态。查询大模型得到:进程句柄:操作系统为每个进程分配的一个唯一标识符。它主要用于操作系统内核和其他系统组件之间进行进程管理和通信。以下是关于进程句柄的一些关键点:```bashls -l /proc//fd```## 查看进程端口占用```bashnetstat -anp | grep ```## 查看进程打开的文件句柄回答不知道,查询大模型得到:```bashlsof -p ```# git回答稀碎,只会使用`push`, `pull`## git rebase`git rebase`可以将一个分支的更改应用到另一个分支上,可以用来1. 更新分支:    - 将当前分支的更改应用到最新的主分支(如 main 或 master)上,以保持代码的最新状态。    - 例如,如果你在一个功能分支上工作,而主分支上有新的提交,你可以使用 rebase 将功能分支的更改应用到最新的主分支上。2. 线性化提交历史:    - rebase 可以使提交历史更加线性,避免合并提交(merge commit)的出现,从而使提交历史更清晰。    - 例如,如果你从 main 分支派生了一个功能分支,并且 main 分支上有新的提交,rebase 可以将你的功能分支的提交重新应用到 main 分支的最新提交之上。3. 解决冲突:    - 在 rebase 过程中,如果遇到冲突,Git 会暂停并提示你解决冲突。解决冲突后,你可以继续 rebase 过程。    - 例如,如果你的功能分支和 main 分支在同一个文件上进行了修改,rebase 会提示你解决这些冲突。## git 如何创建分支回答使用`checkout`具体是:```bashgit checkout -b ```
查看20道真题和解析 牛客创作赏金赛
点赞 评论 收藏
分享
模拟面试
真实面试体验,快速补齐短板
应聘感受
暂无应聘感受
牛客网
牛客网在线编程
牛客网题解
牛客企业服务