1.windows的handle

1)是一个宏定义#define void* HANDLE

2) HANDLE提供了一种统一的方式去获得系统资源,并对其进行操作。
3) HANDLE使得程序设计的细节得以被隐藏,从而能够更加方便地对细节的实现进行修改。
4) 由于不知道HANDLE所指向的具体的数据结构,所以我们必须根据源码提供者的API使用HANDLE,而且不同种类的HANDLE是无法混用的。例如:GetModuleHandle返回的HANDLE和GetFileHandle返回的HANDLE是不同的,只能在他们对应的函数中使用。

5)HANDLE(句柄)是Windows操作系统中的一个概念。在Windows程序中,有各种各样的资源(窗口、图标、光标等),系统在创建这些资源时会为它们分配内存,并返回标示这些资源的标示号,即句柄

无效的返回值为: INVALID_HANDLE_VALUE
编程时可作调试用:
例如:
#include<iostream>
#include<windows.h>
using namespace std;
int main(void)
{
char ch[20] = "Test.dsw";
HANDLE handle;
LPWIN32_FIND_DATA fd;
handle = FindFirstFile(ch,fd);
if(handle != INVALID_HANDLE_VALUE)
cout<<"ok"<<endl;
else
cout<<"no"<<endl;
return 0;
}
2.windows的文件handle和linux的文件系统

同1

3.QT的connect连接的几种方式

//1.Qt::DirectConnection 直接连接,当发送者和接收者在同一个线程的时候

//2.Qt::QueuedConnection 队列的形式连接,当发送者和接收者不在同一个线程的时候

//3.Qt::BlockingQueuedConnection 发送完信号后发送者所在线程会阻塞,直到槽函数运行完。接收者和发送者绝对不能在一个线程,否则程序会死锁。在多线程间需要同步的场合可能需要这个。

//4.Qt::AutoConnection 默认值,使用这个值则连接类型会在信号发送时决定。如果接收者和发送者在同一个线程,则自动使用Qt::DirectConnection类型。如果接收者和发送者不在一个线程,则自动使用Qt::QueuedConnection类型。

//5.Qt::UniqueConnection 这个flag可以通过按位或(|)与以上四个结合在一起使用。当这个flag设置时,当某个信号和槽已经连接时,再进行重复的连接就会失败。也就是避免了重复连接。

4.sizeHint的用途和场景

1)widget->sizeHint().width(); 当widget没有setLayout(layout)设置布局的时候sizeHint是valid不合法的,当设置了布局的时候返回layout的首选尺寸;

setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);

5.map和hashmap

https://www.cnblogs.com/chengxiao/p/6059914.html hashmap以及数组操作的时间复杂度;

1)map时间复杂度 log(n)

2)hashmap时间复杂度o(1)

3)hashmap牺牲空间来节省时间,数据量比较大的情况下采用能够更好地提升效率
6.QT QObject的线程相关性

1)内部会记录当前线程的id,通过对比发送信号的线程id和接受信号的线程id是否在同一个线程内决定采用哪种连接方式;

https://www.baidu.com/link?url=_XBDxthZ8CSty3ZZwSAMMDb1_jRhSvbHTFomO7S_3UjqHo7aojCfFkCcje7Yy8-_&wd=&eqid=ee05ef8200014964000000065c344d27

https://blog.csdn.net/LynFam/article/details/7081545
7.Https的几种返回码

https://i.cnblogs.com/EditPosts.aspx?postid=10188381
8.json和protoful的区别

Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。
9.map遍历的时间复杂度

1)map时间复杂度 log(n)

2)hashmap时间复杂度o(1)

10.list插入的时间复杂度

list插入的时间复杂度为o(1) 常量;不支持随机访问;

1)vector

内部数据结构:数组。

在末尾增加或者删除元素所需时间与元素数目无关,在中间或者开头增加或者删除元素所需时间是随元素数目呈线性变化。

2)deque

内部数据结构是:数组

随机访问每个元素,所需要的时间为常量。在开头和末尾增加元素所需时间与元素数目无关,在中间增加或删除所需时间随元素数目呈线性变化。

3)list

内部数据结构:双向环状链表

不能随机访问一个元素,可双向遍历,在开头,末尾和中间的任何地方增加或者删除元素所需时间都是常量。

4)set

键和值相等。

键唯一

元素默认按升序排列、

5)map

键唯一,

元素默认按键的升序排列

11.迭代器和指针的区别

1)迭代器是指针的抽象,每一种容器都有自己对应的迭代器。

2)迭代器是具有指针行为也就是重载了->指针操作符的class template
12.c++11的新特性 Lambada的传值的几种方式

总结几个要点

1)[]()-> type{} 或者 [](){}两种形式都可以(即省略返回值类型),但是赋值给的函数指针的返回值类型要一致;

2)

[]        //未定义变量.试图在Lambda内使用任何外部变量都是错误的.
[x, &y] //x 按值捕获, y 按引用捕获.
[&] //用到的任何外部变量都隐式按引用捕获
[=] //用到的任何外部变量都隐式按值捕获
[&, x] //x显式地按值捕获. 其它变量按引用捕获
[=, &z] //z按引用捕获. 其它变量按值捕获

外部变量的捕获必须用这几种形式;

3)如果lambda表达式捕获了引用传递,不能作为函数参数传入;

4)可以定义auto或者对应的函数指针类型的变量来接收lambda表达式,然后调用;

5)lambda即使是无参的也不能直接执行,必须通过函数指针或者auto类型的变量来调用执行;
13.QML中C++和QML如何交互和传值
14.QEventLoop
15.内存回收机制

16.c++的类型转换

  • static_cast: 1)完成基础数据类型,2)同一个继承体系中类型的转换 3)任意类型与空指针类型void*之间的转换。
  • dynamic_cast:使用多态的场景,增加了一层对真实调用对象类型的检查
  • reinterpret_cast:个关键词在我们需要把类型映射回原有类型时用到它。我们映射到的类型仅仅是为了故弄\
    玄虚和其他目的,这是所有映射中最危险的。
  • const_cast:去掉常属性,只有转换的当时有效,之后变量恢复常属性;

17.迭代器什么时候会失效

include "stdafx.h"
#include<iostream>
#include<vector>

using namespace std;

int main()
{
vector<int> vect;
for(int i = 0; i < 10; i++ )
{
vect.push_back(i);
}

vector<int>::iterator iter = vect.begin();
for(; iter != vect.end(); iter++ )
{
if( *iter % 2 == 0 )
{
vect.erase(iter);
}
}

return 0;
}

iter是指向vector这个容器中的某个元素,如果不是在for、while循环中,erase删除元素是没有问题的,但是如果在for、while循环中对容器迭代,删除其中符合条件的所有元素,就可能出现问题。vect.erase(iter)之后,iter及其后面的迭代器已经失效了,不应该再使用这些迭代器了,再执行it++,其行为是未定义的。其它容器也会遇到迭代器失效的问题。

对于vector被删除元素的迭代器以及指向后面元素的迭代器全部失效。对于deque在首部或尾部删除元素则只会使指向被删除元素的迭代器失效,任何其它位置的插入和删除操作将使指向该容器元素的所有迭代器失效。

对于list仅有指向被删除元素的迭代器失效。为什么不同容器迭代器失效情况有差别呢?这主要与各容器的数据结构有关。

18.Qt的图形处理;

金山WPS面试题的更多相关文章

  1. 微软Office与金山WPS Office有何私密关系?

    新浪科技讯,9月1日午间消息,国家工商总局在其官网公布消息称.对微软公司副总裁陈实进行反垄断调查询问,要求微软就其综合情况以及企业反映的微软公司Windows操作系统和Office办公软件相关信息没有 ...

  2. 金山wps面经

    前言: 金山wps笔试是好久之前的了,忘记具体几号了.当时在华师参加的宣讲会,然后线下笔试通过了, 昨天(4月2号通知现场面试).今天是在华工酒店进行面试的,一二面一起进行的 一面: 1: 自我介绍 ...

  3. 我进金山wps啦!

    成功进入金山wps暑期精英训练营,希望能够学到很多知识,写这篇文章纪念一下

  4. 中国顶级程序员,从金山WPS走出来,自研了“表格编程”神器

    程序员的圈子里有很多如明星般闪耀的牛人! 有中国"第一代程序员"--求伯君,有在微信获得巨大成功的张小龙,有图灵奖获得者姚期智,有商业巨子张一鸣,更有开源影响力人物--章亦春. 章 ...

  5. 2014/4月金山WPS笔试

    今晚去參加了金山的笔试. 一開始还以为选C++的人不会非常多. 我去啊,一去到,好多人,一整个大教室都快满人了. 还好我算是去的比較早的了. 还拿到了一个位置. 金山还是挺不错的,对于我这类还没有实力 ...

  6. 金山wps的面试经历

    故事从两个月前开始说起吧. 前段时间突然想跳槽,原因也没啥,就是想折腾下,看看外面的世界?有一部分原因是想离家近一些稳定下来,博主上份工作坐标厦门,风景好的简直随便拍照就是大片. 不废话了,机缘巧合, ...

  7. PJzhang:kali linux安装金山wps、永中office、sougoupinyin、ibuspiyin

    猫宁!!! 参考链接:https://www.cnblogs.com/liuxingbusi/p/9277127.html https://www.cnblogs.com/xcb0730/p/6808 ...

  8. 金山WPS一面

    昨天下午在武汉面了一场服务端开发工程师吧,结果还未通知,是校招的, 大体上题目如下: 先自我介绍 然后是聊了一些笔试上的情况 问了spring的的作用以及优势 http的状态,三次握手四次挥手 gc的 ...

  9. 金山云笔试题:AKM函数

    1. 题目描述 /** 阿克曼(Ackmann)函数 [题目描述] 阿克曼(Ackmann)函数A(m,n)中,m,n定义域是非负整数(m<=3,n<=10),函数值定义为: akm(m, ...

随机推荐

  1. [19/04/01-星期一] IO技术_字节流分类总结(含字节数组(Array)流、字节数据(Data)流、字节对象(Object)流)

    一.字节流分类概括 -->1.ByteArrayInputStream /ByteArrayOutputStream(数组字节输入输出)        InputStream/OutputStr ...

  2. Mysql优化实践(分页优化)

    当你和别人都能实现一个某个功能,这时候区分你们能力的不是谁干活多少,而是谁能写出效率更高的代码.比如显示一个订单列表它不仅仅是写一条SELECT SQL那么简单,我们还需要很清楚的知道这条SQL他大概 ...

  3. JavaScript小游戏--2048(移动端)

    HTML5中新添加了很多事件,但是由于他们的兼容问题不是很理想,应用实战性不是太强,所以在这里基本省略,咱们只分享应用广泛兼容不错的事件,日后随着兼容情况提升以后再陆续添加分享.今天为大家介绍的事件主 ...

  4. async--ajax异步传输

    如图:轨迹点组编号依赖所属路口的设置. 所以ajax是异步执行,获取到所属路口还没执行完,就已经执行到根据所述路口获取轨迹点组编号,所以获取不到轨迹点组编号. async:false改成同步执行.就没 ...

  5. JavaScript读取本地json文件

    JavaScript读取本地json文件 今天调试了一上午,通过jQuery读取本地json文件总是失败,始终找不出原因,各种方法都试了 开始总以为是不是json格式的问题.高了半天不行 后来读了一个 ...

  6. 【数据结构】浅谈倍增求LCA

    思路 运用树上倍增法可以高效率地求出两点x,y的公共祖先LCA 我们设f[x][k]表示x的2k辈祖先 f[x][0]为x的父节点 因为从x向根节点走2k 可以看成从x走2k-1步 再走2k-1步 所 ...

  7. 在CentOS 7上安装Docker环境

    官网文档:https://docs.docker.com/engine/installation/linux/centos/ ,本文大部分是照搬官方文档写的,如果你英文还不错,那么就直接移步官方文档吧 ...

  8. 100个常用的linux命令(转)

    来源:JavaRanger – javaranger.com   http://www.javaranger.com/archives/907 1,echo “aa” > test.txt 和 ...

  9. php分页方法

    $page_on=15;//定义每页显示数 $pageNum=$_GET['pageNum']; //当前页数 $result = mysql_query("SELECT * FROM ne ...

  10. LeetCode22.括号生成 JavaScript

    给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结果为: [ "((()))", "(()())& ...