面试|“主打就是一个真诚”
关于我面试啥也不会胡说八道这件事
进行一个简单的面试记录,记录面试遇到的所有问题,奇葩言论大多来源于我
“主打就是一个真诚”
面试官:你觉得深圳怎么样
我:一个字 快
面试官: 感觉 有活力开放的?
我: 感觉,前途一片灰暗
面试官:……嗯,等通知。
出大问题的问题
面试官:类的成员变量 使用 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,
INNER JOIN(内连接):INNER JOIN返回两个表中匹配的行,且仅返回匹配的行。
1
2
3sqlCopy codeSELECT employees.name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;LEFT JOIN(左连接):LEFT JOIN返回左边表中的所有行以及与右边表中匹配的行。
1
2
3SELECT customers.customer_name, orders.order_id
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id;RIGHT JOIN(右连接):RIGHT JOIN返回右边表中的所有行以及与左边表中匹配的行。
1
2
3SELECT orders.order_id, customers.customer_name
FROM orders
RIGHT JOIN customers ON orders.customer_id = customers.customer_id;FULL JOIN(全连接):FULL JOIN返回两个表中的所有行,如果没有匹配的行,则返回NULL。
1
2
3SELECT 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 | POST /submit_user_info |
我: 嗯,我记得有个xmake , vcpkg
面试官:好处
我: 版本控制方便吧,环境配置,迁移能方便些?
面试官:然后呢?
我:但我没用过,我都是git clone 别人的 然后 编译静态库或者动态库。我是调库小子
面试官:…
正确答案:xmake 是个构建工具,并不是包管理工具,但简单包管理是它的功能之一,vcpkg 和 conan 是很好的包管理器 可以更方便地安装依赖关系,并决定所安装的版本,两种包管理器都适用于各种平台,
C++ 的包因为编译器版本不同,库不同,系统环境不同,C++ 标准不同等复杂的编译变量,需要一个好的包管理器进行管理。在多人开发的大型项目中,能够解决很多环境问题。
面试官:单例
我:嗯,简单的说就是,类的构造函数都是私有的了,外没法直接调用构造,所以需要一个嵌套的类进行辅助的初始化和析构吧。。应该,我记得有两种写法,一种是懒汉,一种是饿汉
面试官: 多线程下,单例需要加锁吗?
我:嗯,我记得,不需要吧,main函数之前创建的来着?忘了,应该是不用吧
面试官:如果是调用的时候才创建,多线程同时调用不就会出现线程安全问题吗?
我:是哦,懒汉还是饿汉不用我也分不清了。按照您这么说那指定是要用到同步机制锁等方式来解决的的。
面试官:…….
正确答案:懒汉是不需要加锁的,饿汉是需要使用同步机制锁的方式来避免线程安全问题。懒汉在程序开始执行main函数之前,已经初始化好了,并且只初始化了一次就不会再进行初始化,而饿汉不同,饿汉是因为 调用外部接口的时候才创建,就会出现线程安全问题。初始化很费劲的时候常常使用 懒汉 的写法。
面试的总结:脑子犯浑。
这下我知道为什么面试官最后要自夸他很温和了。。。