• 笔试面试相关记录(11)


    (1)

    1. class Base {
    2. public:
    3. Base() {
    4. cout << 1 << endl;
    5. }
    6. Base(Base && other) {
    7. cout << 2 << endl;
    8. }
    9. Base(const Base& other) {
    10. cout << 3 << endl;
    11. }
    12. Base& operator=(Base&& other) {
    13. cout << 4 << endl;
    14. return *this;
    15. }
    16. Base& operator=(const Base& other) {
    17. cout << 5 << endl;
    18. return *this;
    19. }
    20. };
    21. int main() {
    22. Base base1;
    23. Base base2 = base1;
    24. Base base3(base2);
    25. Base base4(std::move(base3));
    26. Base base5;
    27. base5 = base4;
    28. Base base6;
    29. base6 = std::move(base5);
    30. return 0;
    31. }
    32. 输出:
    33. 1
    34. 3
    35. 3
    36. 2
    37. 1
    38. 5
    39. 1
    40. 4

    (2)

    1. #include
    2. #include
    3. using namespace std;
    4. static int a = 1;
    5. int main(){
    6. int b = 2;
    7. char* c = NULL;
    8. int t;
    9. c = (char*)malloc(100*sizeof(char));
    10. std::time_t t1 = std::time(0);
    11. for (long long i = 0; i < 27000000000; i++) {
    12. b = 1;
    13. }
    14. std::time_t t2 = std::time(0);
    15. cout << "access b=" << t2-t1 << endl;
    16. t1 = std::time(0);
    17. for (long long i = 0; i < 27000000000; i++) {
    18. a = 1;
    19. }
    20. t2 = std::time(0);
    21. cout << "access a=" << t2-t1 << endl;
    22. t1 = std::time(0);
    23. for (long long i = 0; i < 27000000000; i++) {
    24. *c = 'a';
    25. }
    26. t2 = std::time(0);
    27. cout << "access c=" << t2-t1 << endl;
    28. return 0;
    29. }
    30. 编译取消优化:g++ test.cpp -o test -O0
    31. 输出:
    32. access b=47
    33. access a=47
    34. access c=75

    (3)

    1. int b = 2;
    2. const int * a1 = &b;
    3. const *int a2 = &b; //声明错误
    4. const int* const a3 = &b; //a3 和 a4 效果是一样的
    5. int const* const a4 = &b;

    (4)

    1. int i, sum;
    2. for (i = 0; i < 6; i++)
    3. sum += i;
    4. cout << sum << endl;
    5. 输出:15

    (5)

    1. char s[10]; s = "right"; //错误
    2. char s[10];*s="right"; //错误
    3. char *sp;*sp = "right"; //错误
    4. char*sp = "right"; //正确

    (6)

    1. enum ts{1,2,3}; //错误
    2. int x, y = 2, z = 3;
    3. x = y+2 = z-5; //错误
    4. char a = '\xaa';
    5. char a = '\17';
    6. char a = '\t';
    7. 下面引用网友的话:
    8. C语言中 字符有两种表示表示 一种是单个字符 'a' ','
    9. 另一种是用\开始的转义字符 比如‘\\' '\n' 这些有特定含义
    10. 还有一些字符不能用上述方式表示 此时'\123' 这个表示asc码为123的字符
    11. 因为C语言整数有几种表示表示方式
    12. 1238进制为0153
    13. 12316进制为 x7B
    14. 所以'\123''\0153' '\x7B'表示的是同一个字符
    15. '\xaa'表示的是 10×16+10=170 就是asc为170的字符 这个字符无法显示

    (7)

    1. int i = 1, *p = &i, &r = i;
    2. decltype(r+0) c;
    3. decltype(*p + r) a;
    4. decltype(*p) b; //错误
    5. decltype((i)) d; //错误

    (8)

    1. struct A {
    2. char t:4;
    3. // char k:4;
    4. // unsigned short i:8;
    5. // unsigned long m;
    6. };
    7. sizeof(A) = 1
    8. struct A {
    9. char t:4;
    10. char k:4;
    11. // unsigned short i:8;
    12. // unsigned long m;
    13. };
    14. sizeof(A) = 1
    15. struct A {
    16. char t:4;
    17. char k:4;
    18. unsigned short i:8;
    19. // unsigned long m;
    20. };
    21. sizeof(A) = 2
    22. struct A {
    23. char t:4;
    24. char k:4;
    25. unsigned short i:8;
    26. char q:4;
    27. // unsigned long m;
    28. };
    29. sizeof(A) = 4
    30. struct A {
    31. char t:4;
    32. char k:4;
    33. unsigned short i:8;
    34. char q:4;
    35. char p:4;
    36. // unsigned long m;
    37. };
    38. sizeof(A) = 4
    39. struct A {
    40. // char t:4;
    41. // char k:4;
    42. // unsigned short i:8;
    43. unsigned long m;
    44. };
    45. sizeof(A) = 8
    46. struct A {
    47. char t:4;
    48. // char k:4;
    49. // unsigned short i:8;
    50. unsigned long m;
    51. };
    52. sizeof(A) = 16
    53. struct A {
    54. char t:4;
    55. char k:4;
    56. // unsigned short i:8;
    57. unsigned long m;
    58. };
    59. sizeof(A) = 16
    60. struct A {
    61. char t:4;
    62. char k:4;
    63. unsigned short i:8;
    64. unsigned long m;
    65. };
    66. sizeof(A) = 16
    67. struct A {
    68. // char t:4;
    69. // char k:4;
    70. // unsigned short i:8;
    71. int e;
    72. // unsigned long m;
    73. };
    74. sizeof(A) = 4
    75. struct A {
    76. char t:4;
    77. // char k:4;
    78. // unsigned short i:8;
    79. int e;
    80. // unsigned long m;
    81. };
    82. sizeof(A) = 8
    83. struct A {
    84. int e;
    85. char t:4;
    86. // char k:4;
    87. // unsigned short i:8;
    88. // unsigned long m;
    89. };
    90. sizeof(A) = 8
    91. struct A {
    92. unsigned long m;
    93. // int e;
    94. char t:4;
    95. // char k:4;
    96. // unsigned short i:8;
    97. };
    98. sizeof(A) = 16

    (9)HTTP的请求方式:http请求中的常用方法 - 知乎 (zhihu.com)

     (10)get和post的区别:GET 和 POST请求的本质区别是什么?(本质没区别) - 知乎 (zhihu.com)

     

     

  • 相关阅读:
    pandas(综合测试)
    SwiftUI 如何快速识别视图(View)界面的刷新是由哪个状态的改变导致的?
    【JavaScript&&Threejs】判断路径在二维平面上投影的方向顺逆时针
    ASP.NET Core - IStartupFilter 与 IHostingStartup
    leetcode-每日一题-764-最大加号标志(中等,dp)
    代码随想录算法训练营Day60 | 84. 柱状图中最大的矩形
    vue | 样式隔离scoped的原理 样式穿透deep的原理
    【接口测试】工具篇Postman
    说说你对Rust的了解?
    使用 Spring 实现控制反转和依赖注入
  • 原文地址:https://blog.csdn.net/wj617906617/article/details/133937598