金山WPS

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

3

在招职位

222

面试经验

24

真题试卷

查看官网
上传简历
此刻你想和大家分享什么
职位类型
全部
后端开发
最新
热门
06-22 17:31
金山WPS_cpp
金山一面:不完整,好像少了开始的十来分钟。1 类和对象的访问权限什么时候检测,也就是访问private私有成员时编译报错还是运行报错。2 那如何访问到类的私有成员:三种方法,友元,公有成员函数,指针(例如:直接用一个int指针去访问类的int成员,此时不会报错)。3 父类的private,public,protected成员在子类是否可见,能否访问?这个还和继承方式有关,组合起来九个情况。百度搜继承方式和父类访问控制属性图。4 父类成员和子类成员谁先什初始化,谁先析构。还可以研究下多个父类和一个子类,哪个父类先初始化,谁先析构,我记得和继承顺序是有关的。5 析构函数是虚函数吗?编译器会将其编译成虚函数。6 为什么析构函数是虚函数?7 指针引用区别?8 变量引用的引用和变量引用是否都会指向一个变量?9 const int*和int * const 区别10 左值引用和右值引用使用场景11 cpp选择题:忘记了12 move的原理,为什么能将左值变成右值13 malloc和new区别?14 new只返回一个对象的起始地址,delete也只传一个地址,delete怎么知道要释放多大的空间。(不是金山问的,好像是字节面试的时候问的)15 new返回值?16 为什么要有抛异常代替返回值17 cpp类型转换的操作符(static_cast……那四个)18 父类的指针和引用变成子类的指针和引用是否要调用构造函数(不用)。19 智能指针(auto_ptr,shared_ptr,unique_ptr)20 说说什么时候会发生循环引用,如何解决?21 如果vector v1里面存了unique_ptr,如何拷贝给另一个容器v222 map,hash插入删除的时间复杂度23 哈希冲突解决方法24 vector和list的迭代器失效25 进程线程区别26 线程会有自己的堆栈吗?27 算法题:找第k层节点个数:层序遍历。28 找相交链表的第一个公共节点。二面没记录😁,不过很短,貌似半小时,而且还写了算法题,估计拷打八股就十分钟tl:一面:4.22二面:4.29下午三点,测评六点发hr面:5.12直接发邮件约第二天。oc:6.18,base转武汉。录用邮件:6.21。很明显是补录的了,纯运气好,双非还是不要all in 等。
查看28道真题和解析
点赞 评论 收藏
分享
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拷贝/赋值构造出来的,它们内部就指向同一份控制块。这个问题没什么好说的,单纯不会,但我怀疑这么问下去我是不是得把标准库源码都得看一遍😀。
查看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 onblur18. 过滤数组好吧,有两个没记到。编程题,挺简单,没算法1. 把一个数转绝对值2. 把时间戳转为日期字符串
投递金山WPS等公司7个岗位
点赞 评论 收藏
分享
2024-12-27 23:30
已编辑
蚌埠坦克学院 C++
===============时间线====================12-03 一面12-05 二面12-13 HR面12-18 OC12-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道真题和解析
点赞 评论 收藏
分享
模拟面试
真实面试体验,快速补齐短板
应聘感受
暂无应聘感受
牛客网
牛客网在线编程
牛客网题解
牛客企业服务