当前位置: 首页 > 面试经验 >

京东C++笔试

优质
小牛编辑
97浏览
2023-03-28

京东C++笔试

单选题20道:
  1. SQL格式化日期输出:使用DATA_FORMAT(shippeddate,'%W %D %M %Y);
  2. 二次探测再散列hash:二次探测再散列即:如果2的位置有了数据,则寻找2 + 122 + 222 + 32,2 + 42……
  3. c++变浪命名规则:由字母数字下划线组成,必须由字母或者下划线开头
  4. IP地址:28位掩码的网络中最多14台主机,因为16个编码中要去除一个全0的网络号和一个全1的广播号
  5. c++取地址运算符:&
  6. TCP三次握手:第一次:SYN = 1, seq = x; 第二次:SYN = 1, ACK = 1,  ack = x+1; seq = y; 第三次:ACK = 1, ack = y + 1, seq = x + 1;
  7. linux权限操作: chmod a-x demon.c 作用:a表示所有用户,x表示执行权限,-表示去除,该命令的作用是,将demon.c文件的所有用户的执行权限去除。
  8. 模板类在什么时候初始化:运行时,只有确定传入参数的时候,才能进行初始化。
  9. MYSQL自定义变量,数据库连接池
  10. 进程优先级什么时候降低是合理的:分配的时间片用完之后
  11. 栈的进站出站序列:给定一个序列,怎样的进栈顺序无法得到这个序列(对每个选项模拟一下就行了)
  12. 右值引用:C++11的新特性,符号为&&,右值引用是一个左值,非const的右值引用只能绑定到非const的左值。move函数(将左值变为右值)
  13. linux配置文件
  14. 函数声明,
  15. 二叉搜索树:最大值节点的左子树不一定为空,右子树一定为空
  16. 不同数据类型比大小,unsign int > int:自动进行类型转化,会有警告信息
  17. SQL查询语句:左连接, 右连接
  18. 位移运算符:<< ; >>
  19. best-fit内存管理:最佳匹配内存管理,找到与目标内存大小最接近的内存块
  20. 顶点的入度出度
三道编程题:
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++##京东#
 类似资料: