面试
文章平均质量分 90
CodeLuweir
壁立千仞,无欲则刚!
展开
-
【面试招聘】操作系统专场(一)
操作系统的题一般较少;操作系统进程线程区别进程状态转移全局变量a=1,fork子进程后,子进程改变a的值,此时父进程读a有变化吗?如果是静态变量呢进程间通信线程池七大参数、任务提交流程、拒绝策略虚拟内存,页表,内存管理io multiplexing,select / epoll进程通信 shared memory / pipe / socket 等等线程同步 各种锁(不同角度上的),semaphoreswaplinux 常用命令Linux进程调度策略Linux怎么看进程/线程I原创 2021-08-31 10:56:47 · 487 阅读 · 2 评论 -
【好文鉴赏】面试官说你回答的不够深入,怎么办?
事实上,不光在面试沟通时我们需要尽可能、全方面地展示我们的专业深度,在日常工作中,我们面对各种业务场景和需求问题时,同样如此答,回答越深入,你的专家效应往往就越强。模型公式:🚩深度思考 × 事实结合 × 结构化 = 深入回答。原创 2022-11-16 13:53:08 · 984 阅读 · 0 评论 -
【面试招聘】计算机网络专场(一)
三次握手和四次挥手三次握手 所谓的三次握手即TCP连接的建立。这个连接必须是一方主动打开,另一方被动打开的。以下为客户端主动发起连接的图解: 握手之前主动打开连接的客户端结束CLOSED阶段,被动打开的服务器端也结束CLOSED阶段,并进入LISTEN阶段。随后开始“三次握手”:第一次握手:首先客户端向服务器端发送一段TCP报文,其中:标记位为SYN,表示“请求建立新连接”;序号为Seq=X(X一般为1);随后客户端进入SYN-SENT阶段。第二次握手:服务器端接收到来自客户端的原创 2021-08-06 22:46:40 · 4681 阅读 · 12 评论 -
【C/C++】C++ 网络多线程编程
前言学习C++网络编程多线程编程的目的:巩固C++;由于C++大多用于服务器,因此网络和多线程是进入大厂腾讯的必走之路;巩固计算机网络和多线程的知识,方便之后Java的系统学习;一、网络编程基础知识1.1 套接字Q:计算机之间如何通信? 计算机之间的通信约定为一种使用socket(套接字)的方式,比如: Web 服务器和浏览器,浏览器获取用户输入的URL,向服务器发起请求,服务器分析接收到的URL,将对应的网页内容返回给浏览器,浏览器再经过解析和渲染,就将文字、图片、视频等元素呈现给原创 2021-08-06 21:35:20 · 5213 阅读 · 1 评论 -
【面试招聘】C++ 面试题型收集
C++11 constexpr和const的区别详解 constexpr 是 C++ 11 标准新添加的关键字,在此之前(C++ 98/03标准)只有 const 关键字,其在实际使用中经常会表现出两种不同的语义; const并不能代表“常量”,它仅仅是对变量的一个修饰,告诉编译器这个变量只能被初始化,且不能被直接修改(实际上可以通过堆栈溢出等方式修改)。而这个变量的值,可以在运行时也可以在编译时指定。 constexpr可以用来修饰变量、函数、构造函数。一旦以上任何元素被constexpr修饰原创 2021-08-06 11:24:44 · 311 阅读 · 0 评论 -
读书笔记 - -《Python网络编程》重点
文章目录一、前言二、客户/服务器网络编程简介三、UDP3.1 端口号3.2 套接字3.3 UDP分组3.4 小结四、TCP4.1 TCP工作原理4.2 绑定接口4.3 死锁4.4 小结五、套接字名与DNS5.1 套接字方法和指标5.2 现代地址解析5.2.1 使用getaddrinfo()连接服务5.3 DNS协议5.4 小结六、网络数据与网络错误6.1 封帧与引用6.2 XML与JSON6.3 压缩6.4 网络异常:6.5 小结七、TLS/SSL7.1 TLS无法保护的信息7.2 小结:八、服务器架构8.原创 2020-12-03 15:07:35 · 1338 阅读 · 0 评论 -
面试题简答题——数据库相关汇总
问题目录1. 存储过程与函数的区别2. primary key约束 与 unique 约束的区别3. 简述查询优化的步骤4. 数据库中常用的四种文件组织形式5. 为什么要对关系代数表达式进行优化6.文件系统为什么会存在数据冗余?数据冗余会导致哪两类问题?1. 存储过程与函数的区别视图是虚表,不存储数据,存储的是SQL语句,检索视图实际上是执行定义它的SQL语句,视图的定义,存放在数据字典中;视图的性能并没有想象中的出色,对视图请求无非就是执行了一句普通的select语句,然后以结果集构成视图;存储过程原创 2020-05-08 21:34:40 · 797 阅读 · 0 评论 -
【算法刷题】算法题解题方法技巧及典例汇总
一、二分查找使用条件:有序数组+查找目标元素;复杂度:O(log n);优化:实际使用求中间mid索引建议用这种方法:int mid = left + (right-left)/2 可以防止left+right溢出(超出整数范围);可以将查找目标元素扩展为 查找符合要求的元素,括号内为满足的条件,比如这一题:https://leetcode-cn.com/problems/first-bad-version/注意前后端点的判断,不要越界,还有就是return条件的选择(这一题:原创 2021-08-05 10:24:08 · 3475 阅读 · 1 评论 -
【面试招聘】Java 回顾:高级编程(多线程、常用类、集合、泛型、IO流、反射、动态代理、新特性)
多线程程序、进程、线程程序:完成特定任务、用某种语言编写的一组指令的结合,一段静态的代码,静态对象;进程:程序的一次执行过程,即正在执行的程序;线程:进程可细化为线程,是一个程序内部的一条执行路径;进程作为资源分配的单位,线程作为调度和执行的单位,有独立的运行站和程序计数器PC,线程开销小;方法区和堆是一个进程一份,线程共享;单核CPU和多核CPU:并发:一个CPU在一段时间内执行多个任务;并行:多个CPU同时执行多个任务;多线程:①提高应用程序响应,增强用户体验;②提原创 2021-07-27 22:51:53 · 320 阅读 · 1 评论 -
【面试八股】Java回顾:基础编程(基本语法、面向对象、异常处理)
前言原创 2021-05-12 15:59:36 · 278 阅读 · 0 评论 -
【面试八股】Java底层源码——Arrays.toString(数组) & object.toString() & new String()
11原创 2021-04-27 09:46:08 · 1731 阅读 · 2 评论 -
面试准备每日系列:计算机底层之并发编程(三)JVM-垃圾回收
1. 什么是垃圾new 出来 最后不用了并且没有被回收的那块内存 就是垃圾;C、C++让用户自己回收,java、python、js等带有垃圾收集器,Golang也有;C: malloc freeC++:new deletenew 出来内存不及时回收就会导致内存泄漏,泄露多了就会容易造成内存溢出;不用管回收,又没有垃圾回收器帮我回收,没有严重停顿——只有 Rust;把钱放在一边,不功利性地学习,钱就来了垃圾:一个对象没有引用指向它,那它就是垃圾;2. 检测/识别垃圾引用计数法(Ref原创 2021-04-10 08:04:52 · 237 阅读 · 0 评论 -
面试准备每日系列:计算机底层之并发编程(二)缓存行、一致性协议、伪共享、disruptor、CAS等待
文章目录1. 缓存行 Cache line2. 缓存一致性协议 & 伪共享3. 为什么不加volatile?4. 编程先可用再调优5. disruptor & CAS等待1. 缓存行 Cache line先看一个实验: 可以看出,class T里面目前就一个成员变量 x ,所以 arr[0] 和 arr[1] 肯定是相邻的16个字节(一个long变量 8 个字节);缓存行即 CPU 一次性最少把内存中的一行数据存入缓存中,一行一般是 64 个字节,所以这里 arr[0] 和 arr原创 2021-04-04 23:24:42 · 277 阅读 · 0 评论 -
面试准备每日系列:计算机底层之并发编程(一)原子性、atomic、CAS、ABA、可见性、有序性、指令重排、volatile、内存屏障、缓存一致性、四核八线程
文章目录1. 什么是并发编程的可见性2. 如何解决并发线程的可见性问题3. 四核八线程是什么意思并发编程三大特性:可见性有序性原子性1. 什么是并发编程的可见性问题描述:对于这一段程序,我的线程要做的事情是:1、打印m start;2、只要外部变量running为true,我就会陷入死循环,永远也输出不了 m end!;我的主线程要做的事:1、创建一个线程并让他启动该方法;2、然后让它睡一秒钟;3、置running为false,观察是否会输出m end!结果是没输出m end!为什么原创 2021-04-03 23:30:27 · 604 阅读 · 1 评论 -
面试准备每日五题:C++(十)——map&set、set查找、迭代器实现、set低层原理
@{1. 为何map和set的插入删除效率比其他序列容器高,为何map和set每次Insert之后,以前保存的iterator不会失效?因为不需要内存拷贝和内存移动;因为插入操作只是结点指针换来换去,结点内存没有改变。而iterator就像指向结点的指针,内存没变,指向内存的指针也不会变。2. 当数据元素增多时(从10000到20000),map的set的查找速度会怎样变化?RB-TREE用二分查找法,时间复杂度为logn,所以从10000增到20000时,查找次数从log10000=14次到原创 2021-04-01 22:06:44 · 413 阅读 · 0 评论 -
面试准备每日五题:C++(九)——vector、list、deque、priority_queue、map&set
文章目录1. 正确释放vector的内存(clear(), swap(), shrink_to_fit())2. list的底层原理3. 什么情况下用vector,什么情况下用list,什么情况下用deque4. priority_queue的底层原理5. map 、set、multiset、multimap的底层原理1. 正确释放vector的内存(clear(), swap(), shrink_to_fit())vec.clear():清空内容,但是不释放内存。vector().swap(vec原创 2021-03-31 21:04:24 · 357 阅读 · 0 评论 -
面试准备每日五题:C++(八)——重写&重载&隐藏、vector相关
文章目录1. 重写、重载和隐藏2. 链表和数组有什么区别3. vector的底层原理4. vector的reserve和resize5.vector迭代器失效的情况1. 重写、重载和隐藏重写所谓重写,就是在继承中,子类重新定义父类的方法,这里需要注意的是:必须在有继承关系的类中重写;子类重写的方法名和参数列表必须与父类的方法名和参数列表一致;父类方法用 virtual 修饰;子类方法用 override 修饰;重写一般用于接口实现和继承类的方法改写;不管访问父类还是子类的方法,都是调用的原创 2021-03-29 07:45:07 · 292 阅读 · 0 评论 -
面试准备每日五题:C++(七)——左值&右值、面向对象、四种cast转换、拷贝构造函数&赋值、虚函数&多态
文章目录一. 什么是右值引用,跟左值又有什么区别?二. 面向对象的三大特征三. c++中四种cast转换四、拷贝构造函数和赋值运算符的认识五、 对虚函数和多态的理解一. 什么是右值引用,跟左值又有什么区别?左 值 和 右 值 的 概 念 :左值:能取地址,或者具名对象,表达式结束后依然存在的持久对象;右值:不能取地址,匿名对象,表达式结束后就不再存在的临时对象;区别:左值能寻址,右值不能;左值能赋值,右值不能;左值可变,右值不能(仅对基础类型适用,用户自定义类型右值引用可以通过成员函数改变)原创 2021-03-27 23:28:00 · 345 阅读 · 0 评论 -
面试准备每日五题:C++(六)——C&C++、static&const&extern、sizeof & strlen、指针&引用、数组指针&指针数组&函数指针
文章目录一、C和C++的区别是什么?二、关键字static、const、extern作用三、sizeof和strlen的区别四、指针和引用的区别五 、指针数组、数组指针、函数指针一、C和C++的区别是什么?C是面向过程的语言,C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。C中函数不能进行重载,C++函数可以重载C++在C的基础上增添类,C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)原创 2021-03-25 22:34:33 · 611 阅读 · 0 评论 -
面试准备每日五题:C++(五)——野指针、句柄&指针、new&delete&malloc&free、extern、类成员权限
文章目录1. 如何避免“野指针”2. 句柄和指针的区别和联系是什么?3. new/delete与malloc/free的区别是什么4. 说一说extern“C”5. C++中类成员的访问权限1. 如何避免“野指针”指针变量声明时没有被初始化。解决办法:指针声明时初始化,可以是具体的地址值,也可让它指向NULL。指针p被free或者delete之后,没有置为NULL。解决办法:指针指向的内存空间被释放后指针应该指向NULL。指针操作超越了变量的作用范围。解决办法:在变量的作用域结束前释放掉变量的地原创 2021-03-24 19:30:05 · 229 阅读 · 0 评论 -
面试准备每日五题:C++(四)——typedef&define、指针常量、队列&栈、地址赋值、C和C++结构体
文章目录1. typedef 和define 有什么区别2. 指针常量与常量指针区别3. 简述队列和栈的异同4. 设置地址为0x67a9 的整型变量的值为0xaa665.C语言的结构体和C++的有什么区别1. typedef 和define 有什么区别用法不同:typedef 用来定义一种数据类型的别名,增强程序的可读性。define 主要用来定义 常量,以及书写复杂使用频繁的宏。执行时间不同:typedef 是编译过程的一部分,有类型检查的功能。define 是宏定义,是预编译的部分,其发生原创 2021-03-23 23:06:57 · 210 阅读 · 0 评论 -
面试准备每日五题:C++(三)——全局&局部变量、内存分配、strcpy&sprintf&memcpy、函数指针、引用
1. 全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器是怎么知道的?全局变量是整个程序都可访问的变量,谁都可以访问,生存期在整个程序从运行到结束(在程序结束时所占内存释放);而局部变量存在于模块(子程序,函数)中,只有所在模块可以访问,其他模块不可直接访问,模块结束(函数调用完毕),局部变量消失,所占据的内存释放。操作系统和编译器,可能是通过内存分配的位置来知道的,全局变量分配在全局数据段并且在程序开始运行的时候被加载。局部变量则分配在堆栈里面;2. 简述C、C++程序编译的内存分配原创 2021-03-22 22:25:10 · 270 阅读 · 0 评论 -
面试准备每日五题:C++(二)——malloc&new、宏、volatile、const&volatile、(a)和(&a)
文章目录1.C语言的 malloc 和 C++ 中的 new 有什么区别2. 写一个 “标准”宏MIN3. 介绍 volatile 及其作用4. 一个参数可以既是const又是volatile吗5. a 和&a 有什么区别1.C语言的 malloc 和 C++ 中的 new 有什么区别new 、delete 是操作符,可以重载,只能在C++ 中使用;malloc、free 是函数,可以覆盖,C、C++ 中都可以使用;new 可以调用对象的构造函数,对应的delete 调用相应的析构函数;m原创 2021-03-21 09:59:06 · 293 阅读 · 0 评论 -
面试准备每日五题:C++(一)——变量定义&声明、#ifdef & #else、结构体赋值、sizeof & strlen、C和C++的static
文章目录1 变量的声明和定义有什么区别?2 简述#ifdef、#else、#endif和#ifndef的作用3 结构体可以直接赋值吗?4 sizeof 和strlen 的区别5 C 语言的关键字 static 和 C++ 的关键字 static 有什么区别1 变量的声明和定义有什么区别?为变量分配地址和存储空间的称为定义,不分配地址的称为声明。一个变量可以在多个地方声明,但是只能在一个地方定义。加入extern修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分定义。说明:很多时候一个变量,只是原创 2021-03-20 22:44:27 · 276 阅读 · 0 评论