单选题20道:
- SQL格式化日期输出:使用DATA_FORMAT(shippeddate,'%W %D %M %Y);
- 二次探测再散列hash:二次探测再散列即:如果2的位置有了数据,则寻找2 + 12,2 + 22,2 + 32,,2 + 42……
- c++变浪命名规则:由字母数字下划线组成,必须由字母或者下划线开头
- IP地址:28位掩码的网络中最多14台主机,因为16个编码中要去除一个全0的网络号和一个全1的广播号
- c++取地址运算符:&
- TCP三次握手:第一次:SYN = 1, seq = x; 第二次:SYN = 1, ACK = 1, ack = x+1; seq = y; 第三次:ACK = 1, ack = y + 1, seq = x + 1;
- linux权限操作: chmod a-x demon.c 作用:a表示所有用户,x表示执行权限,-表示去除,该命令的作用是,将demon.c文件的所有用户的执行权限去除。
- 模板类在什么时候初始化:运行时,只有确定传入参数的时候,才能进行初始化。
- MYSQL自定义变量,数据库连接池
- 进程优先级什么时候降低是合理的:分配的时间片用完之后
- 栈的进站出站序列:给定一个序列,怎样的进栈顺序无法得到这个序列(对每个选项模拟一下就行了)
- 右值引用:C++11的新特性,符号为&&,右值引用是一个左值,非const的右值引用只能绑定到非const的左值。move函数(将左值变为右值)
- linux配置文件
- 函数声明,
- 二叉搜索树:最大值节点的左子树不一定为空,右子树一定为空
- 不同数据类型比大小,unsign int > int:自动进行类型转化,会有警告信息
- SQL查询语句:左连接, 右连接
- 位移运算符:<< ; >>
- best-fit内存管理:最佳匹配内存管理,找到与目标内存大小最接近的内存块
- 顶点的入度出度
三道编程题:
1.输入a, b,将a个1,b个2,组成一个数组,使得相邻的两个数乘积为偶数。
例子:a = 3 , b = 2.
结果:1 2 1 2 1
思路:奇数*奇数 = 奇数, 偶数 * 奇数 = 偶数, 偶数 * 偶数 = 偶数。
int main() {
int a, b;
cin >> a >> b;
vector<int> res(a + b, 2);
if (a - b > 1) return -1;
for (int i = 0; i < a; i++) {
res[i * 2] = 1;
}
return res;
}
2.求最少移动次数
int main() {
int n = 0;
int k = 0;
cin >> n >> k;
vector<int> iv(n, 0);
int a = 0;
for (int i = 0; i < n; ++i) {
cin >> a;
iv[i] = a;
}
vector<int> visited(k + 1, 0);
long long needRemovedIdxSum = 0;
for (int i = 0; i < k; ++i) {
if (iv[i] <= k && visited[iv[i]] == 0)
visited[iv[i]] = 1;
else {
needRemovedIdxSum += i;
}
}
long long needInsertIdxSum = 0;
for (int e = 1; e <= k; ++e) {
if (visited[e] == 0) {
for (int subi = k; subi < iv.size(); ++subi) {
if (iv[subi] == e) {
needInsertIdxSum += subi;
break;
}
}
}
}
cout << needInsertIdxSum - needRemovedIdxSum << endl;
return 0;
}
3.求漂亮串的个数(漂亮串指包含字符串red,但不包含字符串der)
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int long long
const int mod = 1e9 + 7;
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n;
cin >> n;
vector<vector<vector<int>>> dp(5, vector<vector<int>>(5, vector<int>(2, 0)));
for (int i = 0; i < 4; i++)
for (int j = 0; j < 4; j++)
dp[i][j][0] = (i == 3 ? 23 : 1) * (j == 3 ? 23 : 1);
// R,E,D,$
for (int i = 2; i < n; i++){
vector<vector<vector<int>>> rdp(5, vector<vector<int>>(5, vector<int>(2, 0)));
for (int c = 0; c < 4; c++)
for (int b = 0; b < 4; b++)
for (int a = 0; a < 4; a++){
if (c == 2 && b == 1 && a == 0)//der不转移
continue;
rdp[a][b][(c == 0 && b == 1 && a == 2) ? 1 : 0] += dp[b][c][0] * (a == 3 ? 23 : 1);
rdp[a][b][1] += dp[b][c][1] * (a == 3 ? 23 : 1);
rdp[a][b][0] %= mod, rdp[a][b][1] %= mod;
}
dp = rdp;
}
int ans = 0;
for (int i = 0; i < 4; i++)
for (int j = 0; j < 4; j++)
ans += dp[i][j][1], ans %= mod;
cout << ans << endl;
}
#23届秋招笔面经##C/C++#
#京东#