百度2023秋招研发A卷

百度2023秋招研发A卷

​ 用的是牛客的系统,不知道是我这边电脑和网络的问题,还是牛客系统的问题,我刚开始做选择题的时候,一会卡的点不动选项,一会是摄像头异常(只能退出重进),笔试过程中还接了登临HR的电话,约了一个面试的时间,反正我选择题的时候,问题百出,我退出系统重进都有三次了,也浪费了一些时间,应该会被记录下来吧【不过,我坦然了,据今年入职的应届生说,百度那边试用期六个月,转正名额都不多,今年秋招hc可想而知】。选择题的范围很广,SQL也有,计组也有,反正范围比较广,我记得还有两道是关于Spark,emmm….我是做编译器的,接触都是C和linux的东东,我都不知道这是个啥东西。题型的话,是15道单选,5道多选,3个编程题。

阅读更多...

AMD 2022年中秋节笔试题目

AMD 2022年中秋节笔试题目

首先,题目都是全英的。这个确实读题会慢一些,单词基本都认识,不认识的基本都可以猜出来,最大的影响可能是读题慢一点。包含15道选择题(10个单选,5个多选),2道编程题。

选择题都比较常规的,都是一些基础的知识,现在还记得有:

  • 一个是关于LSB(字节意思感觉是最低有效位的一个判断,也是属于C语言位运算的一个题目)
  • 一个是关于动态链接库的,有一些选项,判断对错。
  • 还有一个是关于C语言计算优先级的,核心是()、*、%、+等优先级顺序。
  • 还有两道关于进程和线程的题目。
阅读更多...

美图-C++测试开发-实习-笔试题

美图-C++测试开发-实习-笔试题

来,直接上题目。

第一题:小美的01串

题目描述:

小美有两个01串s,t。她想求s和t的所有长度等于|s|子串(连续)的汉明距离的和。即,她想知道: ,其中ti指第i个字符开始的长度为|s|的子串。
对于等长01串a, b,他们之间汉明距离的定义是

输入描述:

对于每组数据,包含两行数据,第一行是s, 第二行是t;
1≤|s|≤|t|≤50000

输出描述:

输出一一个整数,表示汉明距离的和。

我的题解代码(c++):
阅读更多...

2022.5.15 微众银行 C++后端开发笔试真题

2022.5.15 微众银行 C++后端开发笔试真题

题型

选择题:20道

编程题:3道

选择题:

20道选择题,涉及的知识比较广泛:数据库,数据结构,编译原理,c++,网络等都有涉及。而且不允许离开页面,离开页面会被记录,应该可以看手机,但是我这边信号不好,手机在很远的地方开热点,所以搭的也比较差,时间原因没有记录下来。印象深刻的题目有:

8题:那种文法可以用下推自动机推导?盲选三型文法。

6题:动态规划和贪心的区别?我感觉应该是最优子结构的不同,选了这个。

9题:关于存储过程的题目,找描述错的。我选了可以用控制结构,这个确实一点都不记得了。

编程题:

三道代码题,前两道都A了,最后一个82%,但是最后一个比较奇怪。下面详细介绍这些题目。

阅读更多...

C++编程学习(B站视频笔记)

C++编程学习(B站视频笔记)

[学习笔记] -北京大学 C++程序设计,笔记源自课程PPT。

课程网址:1. https://www.icourse163.org/course/PKU-1002029030#/info

  1. https://www.bilibili.com/video/BV1Hx411U7xL?p=6

一、从C到C++

1 函数指针

如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间的首地址称为这个函数的地址。而且函数名表示的就是这个地址。既然是地址我们就可以定义一个指针变量来存放,这个指针变量就叫作函数指针变量,简称函数指针。

那么这个指针变量怎么定义呢?虽然同样是指向一个地址,但指向函数的指针变量同我们之前讲的指向变量的指针变量的定义方式是不同的。例如:

1
int(*p)(int, int);

这个语句就定义了一个指向函数的指针变量 p。首先它是一个指针变量,所以要有一个“*”,即(*p);其次前面的 int 表示这个指针变量可以指向返回值类型为 int 型的函数;后面括号中的两个 int 表示这个指针变量可以指向有两个参数且都是 int 型的函数。所以合起来这个语句的意思就是:定义了一个指针变量 p,该指针变量可以指向返回值类型为 int 型,且有两个整型参数的函数。p 的类型为 int(*)(int,int)。

所以函数指针的定义方式为:

1
函数返回值类型 (* 指针变量名) (函数参数列表);

“函数返回值类型”表示该指针变量可以指向具有什么返回值类型的函数;“函数参数列表”表示该指针变量可以指向具有什么参数列表的函数。这个参数列表中只需要写函数的参数类型即可。

我们看到,函数指针的定义就是将“函数声明”中的“函数名”改成“(*指针变量名)”。但是这里需要注意的是:“(*指针变量名)”两端的括号不能省略,括号改变了运算符的优先级。如果省略了括号,就不是定义函数指针而是一个函数声明了,即声明了一个返回值类型为指针型的函数。

那么怎么判断一个指针变量是指向变量的指针变量还是指向函数的指针变量呢?

阅读更多...

我的PPCG安装历程

我的PPCG安装历程

什么是PPCG?

官网的介绍:PPCG is a source-to-source compiler generating OpenCL or CUDA GPGPU code from sequential programs.

中文翻译大致就是:PPCG是一个源到源的编译器(输入是源代码,输出也是源代码),它能将输入的串行程序生成可以并行执行的OpenCL或cuda GPU代码。

我的理解就是:PPCG是一个自动并行化的源到源的编译工具。比如,你给它输入一个C语言的.c文件,它就可以生成CUDA的cu文件,再用CUDA的编译归工具进行编译,就可以在GPU上执行。

一些小问题及解答…

问:PPCG开源吗?

答:额,这个肯定开源的啦~,源码地址是:https://repo.or.cz/ppcg.git ,GitHub地址是:https://github.com/Meinersbur/ppcg

问:工具的作者是?

答:作者是Tobias Grosser团队,据悉,他目前在University of Edinburgh(爱丁堡大学)做编译器、高性能计算等研究,之前曾在ETH Zurich (苏黎世联邦理工学院)、École Normale Supérieure Paris (巴黎高等师范学校)、University of Passau (帕绍大学)进行学习和研究。

问:国内有相关的研究团队吗?

答:答案是肯定的,国内的编译团队也在开展相关的研究,我所知道的就有清华和上交大等学校的团队在开展相关的研究,华为、阿里、字节跳动等大厂也有相关团队在做。国外谷歌等等也都有相关研究。个人觉得随着人工智能和深度学习的不断应用,自动并行化方面的研究会越来越成熟,这个方向符合大家对深度学习编译器(简称DL编译器)的一些现实需求。

阅读更多...

C语言assert断言函数完全攻略

C语言assert断言函数完全攻略

对于断言,相信大家都不陌生,大多数编程语言也都有断言这一特性。简单地讲,断言就是对某种假设条件进行检查。在 C 语言中,断言被定义为宏的形式(assert(expression)),而不是函数,其原型定义在<assert.h>文件中。其中,assert 将通过检查表达式 expression 的值来决定是否需要终止执行程序。也就是说,如果表达式 expression 的值为假(即为 0),那么它将首先向标准错误流 stderr 打印一条出错信息,然后再通过调用 abort 函数终止程序运行;否则,assert 无任何作用。

默认情况下,assert 宏只有在 Debug 版本(内部调试版本)中才能够起作用,而在 Release 版本(发行版本)中将被忽略。当然,也可以通过定义宏或设置编译器参数等形式来在任何时候启用或者禁用断言检查(不建议这么做)。同样,在程序投入运行后,最终用户在遇到问题时也可以重新起用断言。这样可以快速发现并定位软件问题,同时对系统错误进行自动报警。对于在系统中隐藏很深,用其他手段极难发现的问题也可以通过断言进行定位,从而缩短软件问题定位时间,提高系统的可测性。

阅读更多...

C语言函数指针

C语言函数指针

前言

函数指针是什么?如何使用函数指针?函数指针到底有什么大用?本文将一一介绍。

如何理解函数指针

如果有int *类型变量,它存储的是int类型变量的地址;那么对于函数指针来说,它存储的就是函数的地址。函数也是有地址的,函数实际上由载入内存的一些指令组成,而指向函数的指针存储了函数指令的起始地址。如此看来,函数指针并没有什么特别的。我们可以查看程序中函数的地址:

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int test()
{
printf("this is test function");
return 0;
}
int main(void)
{
test();
return 0;
}

编译:

1
gcc -o testFun testFun.c

查看test函数相对地址(并非实际运行时的地址):

1
2
$ nm testFun |grep test  #查看test函数的符号表信息
0000000000400526 T test
阅读更多...

SSE指令集学习笔记

SSE指令集学习笔记

一、移动指令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1. Movaps
movaps XMM,XMM/m128 movaps XMM/128,XMM
把源存储器内容值送入目的寄存器,当有m128时,必须对齐内存16字节,也就是内存地址低4位为0.

2. Movups
movups XMM,XMM/m128 movaps XMM/128,XMM
把源存储器内容值送入目的寄存器,但不必对齐内存16字节

3. Movlps
movlps XMM,m64
把源存储器64位内容送入目的寄存器低64位,高64位不变,内存变量不必对齐内存16字节

4. Movhps
movhps XMM,m64
把源存储器64位内容送入目的寄存器高64位,低64位不变,内存变量不必对齐内存16字节.

5. Movhlps
movhlps XMM,XMM
把源寄存器高64位送入目的寄存器低64位,高64位不变.
阅读更多...

请我喝杯咖啡吧~

支付宝
微信