关于我面试啥也不会胡说八道这件事

进行一个简单的面试记录,记录面试遇到的所有问题,奇葩言论大多来源于我

“主打就是一个真诚”

面试官:你觉得深圳怎么样
我:一个字 快
面试官: 感觉 有活力开放的?
我: 感觉,前途一片灰暗
面试官:……

嗯,等通知。

出大问题的问题

面试官:类的成员变量 使用 const进行修饰与使用static修饰

我: stiaic修饰需要在类外进行定义,因为在类中不是定义而是声明,const,嗯,常量表示不可修改。

面试官: static呢?还有吗?初始化呢?

我:嗯,,好像C++17有个特性 static inline 成员变量 可以在类里定义,其他的忘了。

正确答案:static的最大的作用没讲出来:表示这是一个静态成员变量,它属于类而不是类的实例。类的共享成员变量。它在程序启动时分配内存,放在data段中 并在整个程序生命周期内存在。

面试官: 关于MySql 的联表查询,你会写出的SQL 语句

我:我知道关键字 union 和join。

面试官:UINION 不是,你说说看join ,又有几种JION。

我: 哦哦,想起来了,UINION 是查询select的时候用到的 不过JION 的我忘了。

面试官: ……

正确答案:MySQL支持不同类型的JOIN操作,包括INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN,

  1. INNER JOIN(内连接):INNER JOIN返回两个表中匹配的行,且仅返回匹配的行。

    1
    2
    3
    sqlCopy codeSELECT employees.name, departments.department_name
    FROM employees
    INNER JOIN departments ON employees.department_id = departments.id;
  2. LEFT JOIN(左连接):LEFT JOIN返回左边表中的所有行以及与右边表中匹配的行。

    1
    2
    3
    SELECT customers.customer_name, orders.order_id
    FROM customers
    LEFT JOIN orders ON customers.customer_id = orders.customer_id;
  3. RIGHT JOIN(右连接):RIGHT JOIN返回右边表中的所有行以及与左边表中匹配的行。

    1
    2
    3
    SELECT orders.order_id, customers.customer_name
    FROM orders
    RIGHT JOIN customers ON orders.customer_id = customers.customer_id;
  4. FULL JOIN(全连接):FULL JOIN返回两个表中的所有行,如果没有匹配的行,则返回NULL。

    1
    2
    3
    SELECT customers.customer_name, orders.order_id
    FROM customers
    FULL JOIN orders ON customers.customer_id = orders.customer_id;

这些是最常见的JOIN类型。要执行联表查询,需要指定连接条件,这是连接两个表的基础

面试官:关于MySql ,如果你要存储一个Age 的field,你会写出的SQL 语句

我:我只记得要数据类型的指定

面试官:你指定什么呢?

我:整形吧INTIGER

面试官:还有呢

我: 也可以VARCHAR, 哦,好像还要指定大小

面试官: 然后呢

我:呃,忘了

面试官:还有TINYINT SMALLINT MEDIUMINT BIGINT

我:哦哦,你说我就想起来了

…..

正确示例

1
CREATE TABLE Persons (PersonID INT PRIMARY KEY,    FirstName VARCHAR(50),    LastName VARCHAR(50),    Age INT );

面试官:关于Qt QApplication 是?

我: 我只知道是Qt程序初始化的必要的类。

面试官:…… 你确定?

我: 我只会调库查QAsistance,其他不会就现查(瘫坐

面试官: ……

正确答案:QApplication对象是Qt GUI应用程序的核心。它管理应用程序的控制流和主要设置。在英语中,我们通常会说 “The QApplication object is the heart of the Qt application. It manages the GUI application’s control flow and main settings.”(QApplication对象是Qt应用程序的核心。它管理GUI应用程序的控制流和主要设置)。
———————————————
CSDN:https://blog.csdn.net/qq_21438461/article/details/131830930

面试官:C++如何处理或者实现http请求

我: 刚刚我说了,我只会调库,比如Qt 下我就调QNetworkAccessManager,可以实现GET 与 POST等请求,或者引用第三方的开源库 curl 等

面试官:我要发个XML 该怎么做

我:我记得POST请求头里修改个啥,具体我忘了

正确示例:提交表单

1
2
3
4
5
6
7
8
9
10
POST /submit_user_info HTTP/1.1
Host: example.com
Content-Type: application/xml
Content-Length: 123

<?xml version="1.0" encoding="UTF-8"?>
<user>
<name>John Doe</name>
<email>john@example.com</email>
</user>

我: 嗯,我记得有个xmake , vcpkg

面试官:好处

我: 版本控制方便吧,环境配置,迁移能方便些?

面试官:然后呢?

我:但我没用过,我都是git clone 别人的 然后 编译静态库或者动态库。我是调库小子

面试官:…

正确答案:xmake 是个构建工具,并不是包管理工具,但简单包管理是它的功能之一,vcpkg 和 conan 是很好的包管理器 可以更方便地安装依赖关系,并决定所安装的版本,两种包管理器都适用于各种平台,

C++ 的包因为编译器版本不同,库不同,系统环境不同,C++ 标准不同等复杂的编译变量,需要一个好的包管理器进行管理。在多人开发的大型项目中,能够解决很多环境问题。

面试官:单例

我:嗯,简单的说就是,类的构造函数都是私有的了,外没法直接调用构造,所以需要一个嵌套的类进行辅助的初始化和析构吧。。应该,我记得有两种写法,一种是懒汉,一种是饿汉

面试官: 多线程下,单例需要加锁吗?

我:嗯,我记得,不需要吧,main函数之前创建的来着?忘了,应该是不用吧

面试官:如果是调用的时候才创建,多线程同时调用不就会出现线程安全问题吗?

我:是哦,懒汉还是饿汉不用我也分不清了。按照您这么说那指定是要用到同步机制锁等方式来解决的的。

面试官:…….

正确答案:懒汉是不需要加锁的,饿汉是需要使用同步机制锁的方式来避免线程安全问题。懒汉在程序开始执行main函数之前,已经初始化好了,并且只初始化了一次就不会再进行初始化,而饿汉不同,饿汉是因为 调用外部接口的时候才创建,就会出现线程安全问题。初始化很费劲的时候常常使用 懒汉 的写法。

面试的总结:脑子犯浑。

这下我知道为什么面试官最后要自夸他很温和了。。。