面试题
文章平均质量分 86
aFakeProgramer
Adaptive AUTOSAR的技术专家,AUTOSAR中国官方培训讲师,具备深厚的汽车行业知识和以太网通信技能。SOME/IP、IPC、DDS、DoIP、UDS、TSN和SOA架构,MQTT,加密,操作系统,v2x,以及c++和Python编程语言。改写成个人简介
展开
-
c++开发 高质量 面试题分享
UML 对象图、时序图、活动图 、状态图、协作图 、包图、组件图及部署图目录对象图时序图活动图状态图协作图包图组件图部署图对象图对象图是类图的一个实例,用于显示系统执行时的一个可能的快照,即在某一个时间上系统可能出现的样子,对象图用带下划线的对象名称来表示对象.表现对象的特征对象图展现了多个对象的特征及对象之间的交互时序图对象:时序图中对象使用矩形表示,并且对象名称下有下划线将对象置于时序图的顶部说明在交互开始时对象就已经存在了。gdb是一种常用的调试器,它可以用来调试多线程程序中的某个线程中的某个函数。原创 2023-08-08 16:02:17 · 464 阅读 · 0 评论 -
面试时不懂得自我介绍的人,最后都被PASS掉了
做硬件维护的阿润最近后悔得直跳脚。在被公司赔偿清退后,他直接开启了HIGH玩模式,原计划先玩2个月再做面试准备,结果冷不丁接到心仪公司的面试邀约。因为时间紧、邀约急,在没做好充分准备的前提下,他连第一轮面试都没过就稀里糊涂被PASS掉了,提前准备的经典案例、自身策略性思考都完全没来得及展示。“究竟该如何做好介绍,才能吸引住面试官眼球,阐明我的优势和价值?”长时间未求职面试的阿润懊恼地询问。网上社区也有网友频频发帖求助:“面试时,究竟该如何做自我介绍?”转载 2022-11-09 20:55:48 · 266 阅读 · 0 评论 -
当你遇到Bug该怎么办?
总结本次问题产生的原因及解决问题的方法,思考类似问题今后如何防范,对相同平台产品是否值得借鉴,做到举一反三,从失败中吸取经验。转载 2022-10-26 17:59:15 · 1980 阅读 · 0 评论 -
C++ 11的移动语义
目录可拷贝和可移动的概念 移动构造函数和移动赋值函数 小结移动构造和移动赋值 std::move() 使用 std::move 实现一个高效的 swap 函数 Move and swap 技巧 参考可拷贝和可移动的概念在面向对象中,有的类是可以拷贝的,例如车、房等他们的属性是可以复制的,可以调用拷贝构造函数,有点类的对象则是独一无二的,或者类的资源是独一无二的,比如 IO 、 std::unique_ptr等,他们不可以复制,但是可以把资源交出所有权给新的..转载 2021-12-15 10:27:02 · 221 阅读 · 0 评论 -
左值引用与右值引用
#include <iostream>using namespace std;void change(int &rnum)//引用就是变量名的别名{ rnum =111;}//c++中能用引用的地方,就不要使用指针int main(){ int num(10);//左值,内存实体 int &rnum(num);//变量的别名 rnum =1;//等于num的别名 cout << num<<endl; change(num);.原创 2021-12-15 10:25:45 · 268 阅读 · 0 评论 -
图文并茂,一文讲透C语言结构体内存对齐
面试官:你知道C语言的结构体对齐吗?应聘者:听说过……平时很少关注……面试官:好吧,那回去等通知吧C语言结构体对齐问题,是面试必备问题。本文,除了用图解的方式讲清楚结构体知识点外,还将为你解答以下问题: 为什么会有结构体内存对齐? 结构体怎么对齐? 学习结构体对齐有什么用? 结构体对齐有没有实际应用? ▍结构体内存对齐的原因一句话,为了提高效率,这个跟芯片设计有关。自从我们刚学习编程开始,就会接触到例如字、双字、四字等...转载 2020-08-26 21:48:58 · 722 阅读 · 0 评论 -
爬楼梯的算法面试题
一个小孩爬楼梯,每次可以爬1个、2个或3个台阶,编程求出这个小孩爬完10个台阶的楼梯一共有多少种走法。def main(): k = 0 # 构建函数1*x+2*y+3*z = 10 # 确定x取值范围 for x in range(0,11): # 确定y取值范围 for y in range(0,6): # 确定z取值范围 for z in range(0, 4):原创 2021-01-18 13:54:09 · 1209 阅读 · 3 评论 -
二维坦克大战游戏代码开发
这是我实际面试中,遇到的一个题目,编写一个坦克大战游戏。一开始感觉懵,后来代码写写就好了。先放一张图片,后面再添加对应的代码。原创 2020-07-07 23:14:10 · 464 阅读 · 0 评论 -
6月21 刷题思考
1、RALL相关知识点2、std::set的使用??不熟练3、一个无序整数数组中找到最长连续序列4、Two Sum 问题 Data structure design5、i++在两个线程里边分别执行100次,能得到的最大值和最小值分别是多少?是i++在两个线程里边分别执行100次,能得到的最大值和最小值分别是多少?i++只需要执行一条指令,并不能保证多个线程i++,操作同一个i,可以得到正确的结果。因为还有寄存器的因素,多个cpu对应多个寄存器。每次要先把:i从内存复制到寄存器原创 2020-06-21 19:44:15 · 186 阅读 · 0 评论 -
分布式实时处理系统——C++高性能编程 RAII resource acquisition is initialization
分布式实时处理系统——C++高性能编程 【前言】基于通信基础,介绍Hurricane实时处理系统的工程实现,主要使用C++语言。一、IPC、socket、异步I/O epoll二、C++11 1、linux内存管理中使用RALL原则,C++通过加入类的构造函数和析构函数解决资源管理问题。让编译器自己去调用析构函数释放资源。 2、类对象的值传递问题会导致多次析构,使用智能指针; 3、C++怎么实现的线程和锁机制; 4、多线程问题下的内存屏障(禁止编译器优化)、CPU内..转载 2020-06-21 19:03:59 · 2237 阅读 · 3 评论 -
力扣刷题6月4 两数相加
面试题38. 字符串的排列难度中等46收藏分享切换为英文关注反馈输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = "abc"输出:["abc","acb","bac","bca","cab","cba"]限制:1 <= s 的长度 <= 8class Solution {public: vector<string> permutation(string s)原创 2020-06-04 21:48:31 · 244 阅读 · 0 评论 -
leetcode刷题5/29
面试题24. 反转链表难度简单42定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000/** * Definition for singly-linked list. * struct ListNode { * int val; *原创 2020-05-29 20:45:14 · 245 阅读 · 0 评论 -
B站视频:如何成为一个架构师笔记
架构师可能更关注的不是编程语言本身。而是一些框架,一些设计模式,怎么和业务更好地契合。架构师需要会nigx如果服务器中有大量的IO那么负载会更大,为了解决平凡读取磁盘的操作,我们通常,会在系统中加上一层缓存,在内存中存在这样的一层缓存,可以把经常读取的数据,放在缓存中去,从而减少那种高平访问的数据,对数据库,对磁盘的一个访问。达到减少服务器和数据库的一个压力的效果。数据分片:垂直分片(按功能分)水平分片nosql非关系性数据库API的设计怎么做加密...原创 2020-05-27 22:10:08 · 208 阅读 · 0 评论 -
算法刷题5-27 找到一个数组中出现一次的数字, 其他数字出现均为偶数次
找到一个数组中出现一次的数字, 其他数字出现均为偶数次input【1,1,2,3,3,4,4,6,7,6,7】out: 2算法思路:1^1=00^1 =10^1^2^1=2#include <iostream>#include <vector>using namespace std;int main(){ vector <int> v1 = {1,1,3,3,4,4,2}; int res = 0; f...原创 2020-05-27 21:22:56 · 395 阅读 · 0 评论 -
leetcode 刷题 三元组问题 三数之和等于0
15. 三数之和难度中等2128收藏分享切换为英文关注反馈给你一个包含n个整数的数组nums,判断nums中是否存在三个元素a,b,c ,使得a + b + c =0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4];满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]这是一道非常典型的题目,值得我们细细研究。题意十分简单,在一...原创 2020-05-23 22:22:58 · 1804 阅读 · 0 评论 -
将字符串转换为数字(小数) 或者相互转换 c++
首先推荐用用C++的stringstream。主要原因是操作简单。数字转字符串,int float类型 同理#include <string>#include <sstream>int main(){ double a = 123.32; string res; stringstream ss; ss << a; ss >> res;//或者 res = ss.str(); return 0;...转载 2020-05-18 18:06:55 · 7876 阅读 · 0 评论 -
c++刷题,判断一个数是不是2的幂次,并判断一个数的不以0位开头的变位数是不是2的幂次
问题2:《编程之美——微软技术面试心得》这本书中讲了三种方法,都很精辟,一种的判断方法如下:intis_pow_of2(inti){intcount=0;while(i){count+=i&0x01;i>>=1;}if(count<2){printf("YES");//若count=0或者count=1,...原创 2020-05-15 07:35:36 · 588 阅读 · 0 评论 -
牛客 c++网刷题 爆炸数组 字符串匹配问题
class Solution {public: vector<int> decompressRLElist(vector<int>& nums) { vector<int> vec1 = nums; vector<int> vec2; vector<int>::iterator it = vec1.begin(); if(nums.size() >=2 &...原创 2020-05-14 08:09:03 · 384 阅读 · 0 评论 -
volatile详解
编译器优化介绍: 由于内存访问速度远不及CPU处理速度,为提高机器整体性能,1)在硬件上:引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。2)软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。编译器优化常用的方法有:将内存变量缓存到...转载 2020-04-27 11:13:24 · 474 阅读 · 0 评论 -
c++智能指针内存管理std::auto_ptr、 std::shared_ptr、std::weak_ptr make_shared
由于C++语言没有自动内存回收机制,程序员每次new出来的内存都要手动delete。程序员忘记delete,流程太复杂,最终导致没有delete,异常导致程序过早退出,没有执行delete的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr、boost::shared_ptr、...原创 2020-04-26 15:34:55 · 680 阅读 · 1 评论 -
c++的四种强制类型转换:static_cast dynamic_cast const_cast reinterpret_cast
dynamic_cast主要用于“安全地向下转型dynamic_cast用于类继承层次间的指针或引用转换。主要还是用于执行“安全的向下转型(safe downcasting)”,也即是基类对象的指针或引用转换为同一继承层次的其他指针或引用。至于“向上转型”(即派生类指针或引用类型转换为其基类类型),本身就是安全的,尽管可以使用dynamic_cast进行转换,但这是没必要的, 普通的转换已...原创 2019-03-19 09:35:24 · 973 阅读 · 0 评论 -
C++ 中的深拷贝与浅拷贝
https://www.cnblogs.com/cxq0017/p/10617313.html转载 2020-03-14 17:39:05 · 143 阅读 · 0 评论 -
爱德万题目
shared_ptr指针的循环引用问题weak_ptr 指针的使用?lockgurad的使用单例模式的线程安全问题try块中,内存分配时出错了怎么办。一个数组 int arr[]={1,2,-5,3,-4,8,9,2,5,-4,2,5,-8},求出数组中的最大子数组...原创 2020-03-14 21:31:36 · 615 阅读 · 0 评论 -
计算机指令
指令系统的设计原则包括:完备性:该有的都要有有效性:简洁、加速常用操作、没有歧义规整性:对称、均匀、一致(简单源于规整)兼容性:之前/之后的都能用下面属于CISC(复杂指令系统)特点的是: A.指令系统复杂 B.以寄存器-寄存器方式工作 C.指令周期长 D.指令周期短 ...原创 2020-03-14 21:30:40 · 457 阅读 · 0 评论 -
分治法,迭代与动态规划及贪心算法感悟
分治法,动态规划法,贪心算法这三者之间有类似之处,比如都需要将问题划分为一个个子问题,然后通过解决这些子问题来解决最终问题。但其实这三者之间的区别还是蛮大的。1.分治法 分治法(divide-and-conquer):将原问题划分成n个规模较小而结构与原问题相似的子问题;递归地解决这些子问题,然后再合并其结果,就得到原问题的解。 分治模式在每一层递归上都有三个步骤:...转载 2020-03-10 14:01:44 · 814 阅读 · 0 评论 -
基本的排序算法C++实现(插入排序,选择排序,冒泡排序,归并排序,快速排序,最大堆排序,希尔排序)
https://www.cnblogs.com/chenxiwenruo/p/8529525.html#include <iostream>#include <cstdio>#include <algorithm>#include <string.h>#include <cstdlib>#include <ctime...转载 2020-02-15 17:27:18 · 225 阅读 · 0 评论 -
c++多态特性看懂这一篇就够了
什么是多态?有哪些分类?答:多态是面向对象的重要特性之一,它是一种行为的封装,是同一种事物所表现出的多种形态,简单地说是”一个接口多种实现“有两种类型的多态性:编译时的多态性。编译时的多态性是通过重载来实现的。运行时的多态性。运行时的多态性是通过虚成员实现的。构造函数为什么不能是虚函数?1.从存储空间角度。 虚函数对应一个vtable,这个vtable其实是存储在对象的内存空...原创 2019-11-07 16:25:35 · 784 阅读 · 0 评论 -
爱德万题
智能指针的用法,shared_ptr循环引用的问题,举例说明写一个模板类,它的构造函数和析构函数为什么必须是public的?int arr[]={1,2,8,4,-6,2,-6,7,5,-6,1,-4,5};找出和最大的子串。动态规划算法内功必须到位。...原创 2019-11-07 09:13:38 · 398 阅读 · 0 评论 -
刷题c++ 思考
1 有一个vector数组,要从中去掉一个数,使的这个数组中的数的连乘积最大,返回这个数的下标(数组中可能有正数,负数,0 )int getMax(Vector &v1,int index){}写一下思路:来一次遍历,记录数组中的正数的最小值,记录数组中的负数的个数和负数的最大值,记录数组中的0的个数,如果负数的个数是偶数或者0,并且没有0 ,那...原创 2019-10-31 09:39:15 · 162 阅读 · 0 评论 -
UClode 互联网公司面试
面试的岗位是sql内核开发1、写一个1,2 ,3,4,5数字做全排列的输出程序思想是如果只有两个数字那么只有两种排列1 2和2 1先固定一个数,后面就是4个数做全排列,要是把4个数的第一个数固定,就是3个数做全排列,再把3个数做全排列,把三个数的第一个数固定,就是两个数做全排列。代码实现:https://blog.csdn.net/weixin_39541632/artic...原创 2019-10-29 21:11:16 · 212 阅读 · 0 评论 -
AMD面试小结
关于git如何使用关于GDB调试如何使用关于多线程编程关于用户态和内核态?关于openGL关于voiltale你用过没? volatile表示对象的值可能在程序的控制或检测之外被改变,并告诉编译器不应该对这样的对象进行优化。voilatile起到对类型额外修饰的作用。class test{};volatile int i; // 该...原创 2019-10-29 17:13:55 · 2616 阅读 · 0 评论 -
爱德万C++笔试题
#include <iostream>using namespace std;class Base{ public: virtual void f(float x){cout<<"Base::f(float)"<<x<<endl;} void g(float x){cout<<"Base::g"<<x<<...原创 2019-10-26 21:25:39 · 1100 阅读 · 1 评论 -
常量指针与指针常量,函数指针与指针函数
1、常量指针:本质是一个指针,表示一个指向常量的指针const int * p;//能够改变指针的指向,但不能改变指针所指对象的值int a=0,b=1;const int *p = &a;*p = b;//编译出错p = &b;//okintconst * p; //同上2、指针常量:本质是一个常量,表示一个指针是常量int * const...转载 2019-10-21 14:23:55 · 499 阅读 · 0 评论 -
数据结构常见问题和概念
1、数组和链表的区别。从逻辑结构上来看,数组必须实现定于固定的长度,不能适应数据动态增减的情况,即数组的大小一旦定义就不能改变。当数据增加是,可能超过原先定义的元素的个数;当数据减少时,造成内存浪费;链表动态进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。从内存存储的角度看;数组从栈中分配空间(用new则在堆上创建),对程序员方便快速,但是自由度小;链表从堆中分配...转载 2019-10-21 11:50:37 · 2197 阅读 · 0 评论 -
c++ 11/14新特性
// C++11 新增特性// 1、自动类型推导 ====> autoint main1(){ auto a = 10; // a 是 int 类型 auto d = 1.2; // d 是 double 类型 auto f = 2.3; // f 是 float 类型 cout << a << d <<...转载 2019-10-20 10:41:02 · 158 阅读 · 0 评论 -
C++中的四种强制转换 dynamic_case,const_cast,static_case,reinterprer_case的不同
使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。1 static_cast用法:static_cast < type-id > ( expression )该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:①用于类...转载 2019-07-13 13:33:11 · 540 阅读 · 0 评论 -
为什么要序列化,如何序列化和反序列化?
当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为对象。把对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为对象的过程称为对象的反序列化。说的再直接点,序列化的目的就是为了跨进程传递格式化数据一个原因是将对象的状态保持在存储媒体中,...转载 2019-07-11 18:00:47 · 3083 阅读 · 0 评论 -
一个高级软件工程师面试被问的问题
使用new和malloc如何解决内存碎片问题?多进程间通信几种方式,你用过几种方式?线程间通信,用过几种方式分不同的场景,适合用哪种通信方式内存管理,如果让你来实现。你会怎么去设计。内存池实现方案?死锁的理解如何避免死锁内存管理,程序在linux环境下运行崩溃了,如何查找问题?void com_utils_t::dump_stack(){#ifdef __i386_...原创 2019-08-10 10:54:34 · 1099 阅读 · 0 评论 -
面试时你需要问HR什么问题?
与职位相关的问题要多问,如: 1、我知道该职位的首要职责,但公司有没有其他的要求? 2、我的专长是XX,请问XX部门在公司占有什么样的位置? 6、面试之后的安排都是什么,您会在什么时候做出决定? 以自我为中心的问题少问,如: 1、贵公司是做什么的? 2、公司的工作时长,每周工作几天?每天的上班时间?晚上会加班到几点? 2、该职位月薪多少,公司的福...原创 2019-08-10 11:00:22 · 13401 阅读 · 0 评论 -
c++的四种强制类型转换
c++的四种强制类型转换为:static_cast dynamic_cast const_cast reinterpret_castc++相对于c的强制转换可以提...原创 2019-06-12 09:11:27 · 1014 阅读 · 0 评论