面经整理2

https://blog.nowcoder.net/zhuanlan/v0E5P0
http://www.cyc2018.xyz/#%E7%AE%97%E6%B3%95
面经:https://blog.csdn.net/qq_43763344/article/details/104863383

C++

  1. new和malloc的区别*
    new→operator new(size)→malloc(size)->构造函数:https://blog.csdn.net/qq_38646470/article/details/79824464
  2. 深浅拷贝问题,如何解决,浅拷贝应用场景,深拷贝应用场景。
    浅拷贝:写时复制
    浅拷贝应用场景:智能指针
    深拷贝应用场景:拷贝构造函数
  3. vector和list的区别,应用场景
    vertor顺序存储,随机性好,查询方便,插入删除不方便。
    list链式存储,插入删除方便
  4. map的底层实现,插入和删除的时间复杂度,红黑树的结构构是什么样子的,为什么map用红黑树而不用AVL树或者二叉搜索树
    map底层红黑树:插入和删除2和3,查找O(log2),红黑树的五大特征,红黑树是弱平衡二叉查找树、删除、插入和查找都稳定
  5. C++的异常有哪些,如何捕获
    指针指向异常、基类对象强制转换到派生类时引发异常、数组越界异常、
    C++异常是以继承的方式展现出来的,exception只是一个抽象类,通过虚函数的方式来进行继承,可以达到C++多态的效果。直接可以使用父类指针或者引用来捕获异常。
    try{}catch(exception& bt){bt.what()}
    https://blog.csdn.net/weixin_43796685/article/details/104742507
  6. 哪些类内成员函数可以是虚函数,哪些不能是
    不能是虚函数的成员函数有:静态成员函数,内联成员函数,构造函数。
    没有什么函数需要硬性规定为虚函数,一般析构函数会被定义为虚函数
  7. 如何使用C语言实现C++的封装、继承、多态 https://blog.csdn.net/qq_36782456/article/details/71597699
    封装:通过struct。数据和操作的封装,操作通过函数指针void (*pf)(int)
    继承:通过组合,即A声明为struct B的变量
    多态:使用函数指针,A中有一个函数指针,B组合A,B将A的指针指向新的函数,再通过指针调用B的时候就是B的函数了
  8. STL中经常使用的容器,使用时需要注意哪些地方;
    vector :初始化指定大小,不然会引起频繁的内存扩展、erase没有删除内存、全部清空vector().swap(vecNum);vector< bool>出错
  9. 智能指针用的多吗?智能指针是怎么实现的? weak point怎么实现的
  10. unique_ptr https://www.cnblogs.com/wxquare/p/4759020.html
  11. 虚函数了解吗,虚函数指针是在什么时候初始化的(编译)
  12. 写一个map的删除函数。红黑树删除
  13. 虚函数
  14. vector和哪一种数据结构相似,list和哪个数据结构相似
  15. 使用vector要注意的问题,list和vector的优缺点
  16. map讲一讲
  17. vector用过吗?仿函数是什么?迭代器失效原理,为什么会失效?
    仿函数:重载了operator() 的实现某种功能的类
    仿函数: https://www.cnblogs.com/WPF-342201/p/12976624.html
  18. 在使用容器的时候,如何分配内存空间?
  19. 浅拷贝和深拷贝,所有的对象都是多个对象使用一个资源吗?深拷贝是一个对象占用一个资源?
    浅拷贝问题:如果有指针,进行了浅拷贝,只是多了几个指向本地址的指针,析构的时候对指针进行释放,则会多次释放同意空间。
    解决浅拷贝:重载“=”操作符和拷贝赋值函数,https://blog.csdn.net/zanda_/article/details/80151092
  20. static关键字
  21. const使用方法及常用的使用场景
  22. map容器,底层原理,key可以重复吗?
  23. 二叉树的了解?普通二叉树、AVL树、红黑树
  24. 进程间的通信方式
  25. delete和delete[]的区别
  26. 如何定位内存泄漏?如何定位内存泄漏的代码?
    如何定位内存泄漏,用ps和kill ttps://blog.csdn.net/yvhqbat/article/details/51966906
    定位内存泄漏代码?:记录申请和释放次数?

操作系统

  1. linux下的进程通信方式,线程通信方式:https://worthsen.blog.csdn.net/article/details/78527115?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=1328627.24862.16154678910000155&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control
    管道:有名和无名
    信号量:PV操作
    信号:触发机制
    消息队列:消息链表、存放在内核中
    共享内存:映射同一块地址
    socket:不同进程中

    线程:临界区、互斥量、信号量、信号(事件)

  2. 进程和线程的区别,使用场景

  3. 如何使用管道实现双向通信 https://blog.csdn.net/lxj362343/article/details/114401686

  4. 服务器模型和网络架构:一问一答CS模型、多线程服务器程序、基于事件驱动的服务器模型
    https://blog.csdn.net/a236209186/article/details/60959434

  5. 为什么共享内存时最快的通信方式,共享内存的通信是同步的吗
    进程通信的几种方式比较https://worthsen.blog.csdn.net/article/details/78527115?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=1328627.24862.16154678910000155&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

  6. 如何实现共享内存的同步通信,信号量 while循环

  7. 上下文切换 https://blog.csdn.net/DLUTBruceZhang/article/details/10062105?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

  8. select和epoll的区别,以及应用场景
    select可以用于服务器之间的通信和转发,因为会一直有消息,使用链表比建造红黑树和链表快。如果是大量的连接使用epoll会更好

  9. epoll的水平触发(level_triggered)和边缘触发(Edge_triggered),如果边缘触发一次没有读完缓冲区,并且缓冲区一直没有满要怎么办,如何将剩下的数据读完
    select和poll都是水平触发,epoll两个都支持
    使用非阻塞 fd ,read 不会阻塞,read 过程中可以继续去查看 epoll 中的事件。
    https://www.cnblogs.com/fchy822/p/8857254.html

  10. 内存泄漏如何检测 https://blog.csdn.net/daaikuaichuan/article/details/80874436

  11. 智能指针解决了什么问题,shared_ptr 存在什么问题

  12. 进程调度的方式 非抢占式 和抢占式(优先权原则、短作业优先、时间偏原则)
    非抢占式 切换原因:正在执行的进程执行完毕或异常、执行中的进程因提出IO请求而暂停、通信或同步过程中执行了某种操作(wait bloack等)
    https://blog.csdn.net/u011774517/article/details/61418550

  13. 多进程和多线程的区别

  14. 怎么看进程使用情况–top详情 https://blog.csdn.net/xujiamin0022016/article/details/89072116

  15. 上下文切换(用户态和内核态)https://blog.csdn.net/dingshuo168/article/details/106198218/

  16. 线程怎么实现内存共享,会发生什冲突?如果死锁了,怎么解开??如果你用锁怎么实现,系统方面的。

  17. Linux 查找指定大小和名字的文件 find -size XG -name na

数据库

  1. MySQL的事务是什么,特性有什么

  2. 数据库的特性和事务,四种隔离机制都是什么

  3. mysql的搜索引擎,以及这两中搜索引擎的区别和应用场景
    https://www.cnblogs.com/hcfinal/p/10431230.html

  4. mysql的四种特性,隔离机制,脏读、幻读都是啥

  5. mysql的索引底层实现,为什么用B+树实现,而不用B树和查找树

  6. mysql中常用的锁结构和应用场景 https://blog.csdn.net/weixin_31342203/article/details/113658247

  7. 如何处理高并发情况下的mysql情况 https://blog.csdn.net/isoleo/article/details/51516989?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=1328655.11453.16158820620685995&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

    分库、分表、分布式
    分库分表:由单点分布到多点数据库中,从而降低单点数据库的压力
    集群方案:解决DB宕机带来的单点DB不能访问
    读写分离:极大限度提高了应用中read数据的速度和并发量、无法解决高写入压力

    分表:按号段分、按hash取模分、在认证库中保存数据库配置

  8. 负载均衡
    负载均衡(Load Balance),其意思就是将负载(工作任务)进行平衡、分摊到多个操作单元上进行执行。在负载均衡中可以分为两种方式,硬件方式与软件方式。硬件负载均衡主要是有F5、思科,在软件方式主要包括http重定向DNS重定向、反向代理、NAT转换等。
    负载均衡器:直接作用域交换机

  9. MySQL能支持多大的数据量?与表结构有关,表结构简单就能存储更多数据

  10. redis数据结构、字符串

  11. redis的单线程

  12. redis的hash

计算机网络

  1. TCP的三次握手,为什么要三次握手
    两次握手会导致迟来的消息又开启一个线程
  2. 在浏览器输入一个www.qq.com后,到用户看到的完整界面,发生了什么
    DNS协议解析IP、TCP连接、HTTP发送get消息、消息到 传输层、网络层、数据链路层、物理层传输、服务器接收消息、返回html文本、释放tcp连接、浏览浏览器显示html内容
  3. TCP四次挥手:
  4. HTTP报文格式是怎么样的,都实现了哪些请求(GET POST)
    请求头(请求方法、URL、协议版本)、请求头部(头部字段、值)、空行、请求体
    get请求:请求指定页面信息、返回实体主体
    post请求:向指定资源提交数据进行处理请求。数据被包含在请求体里面、post可能会导致新的资源的建立和已有资源的修改
    put 从客户端向服务器删除指定的页面
    https://www.cnblogs.com/weibanggang/p/9454581.html
  5. 对网络安全有多少了解 https://baike.baidu.com/item/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/343664?fr=aladdin
  6. https 加密算法,https的主要流程 https://www.cnblogs.com/chengdabelief/p/6714052.html
  7. 网络安全,XSS是什么,DDos是什么。如何解决这些问题

数据结构与算法

  1. 将一下堆排序和快排序的基本逻辑
    堆排序:具有以下性质的完全二叉树:每个结点的值都大于或等于左右孩纸结点的值称为大堆顶。每个结点的值都小于等于左右孩子的值称为小堆顶。https://www.cnblogs.com/chengxiao/p/6129630.html
    堆排序的基本思想:将待排序序列构造成一个大堆顶,此时整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余的n-1个元素重新构造成一个堆,这样就会得到n个元素的次小值。如此反复,便能得到一个有序序列了。
    步骤一 构造初始堆。将无序序列构造成一个大堆顶(升序采用大堆顶,降序采用小堆顶)
    步骤二:将堆顶元素与末尾元素进行交换,使得末尾元素最大。然后继续调整堆,再将堆顶元素与末尾元素交换,得到第二大元素。如此反复进行交换、重建交换。
    快排:

  2. 在数组中选择一个基准值(通常为数组第一个)

  3. 将数组中小于基准数的数据移到基准数左边,大于基准数的移到右边

  4. 将集装数左右两边的数组,不断重复以上两个过程,直到只有一个元素,即为全部有序

  5. 在这其中排序算法中,哪些是稳定排序,哪些是不稳定排序,哪些需要额外的空间
    稳定的排序算法:冒泡排序、插入排序、归并排序、计数排序
    不稳定:希尔排序、选择排序、快速排序、堆排序
    额外空间:快速排序(logn)和归并排序O(n)

  6. 红黑树和AVL树的区别

  7. 快排的时间复杂度,快排中需要注意什么问题

情景题

  1. 在一个几十G的大文件中,如何快速查找指定的QQ
  2. Linux在磁盘上中找一个2G的名字为test的文件要如何进行
  3. 索引算法,动态规划算法了解
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《java面经-百度准入职老哥整理.pdf》是一份关于百度准入职面试的Java面经整理。这份面经是由百度准入职的老哥整理而成,其中记录了一些面试时可能会遇到的问题以及解答方法。 这份面经对于准备参加百度准入职面试的人来说非常有价值。首先,它列出了一些常见的面试问题,涵盖了Java语言的各个方面,包括基础知识、数据结构与算法、设计模式、多线程、网络编程等等。通过仔细研究和复习这些问题的答案,可以帮助面试者全面了解Java语言的特性和应用。 其次,这份面经还提供了问题的解答思路和方法,帮助面试者理清思路,正确回答问题。这对于很多面试者来说特别有帮助,因为在面试时有时会遇到一些棘手的问题,有了这份面经的指导,面试者可以更好地掌握应对策略。 不过需要注意的是,面经作为一份参考资料,不能完全依赖于它来准备面试。面试官可能会问一些不在面经中列出的问题,因此考生还是需要自己对Java语言有充分的了解,并能够熟练运用。同时,面试官还会关注考生的沟通能力、解决问题的能力以及对新技术的学习和掌握能力。 总体来说,《java面经-百度准入职老哥整理.pdf》是一份非常宝贵的资料,可以帮助面试者对Java面试中可能会遇到的问题有更深入的了解,提供了解答思路和方法。但记住,面试准备还需要多方面的知识积累和实践经验的积累,才能在面试中展现自己的优势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值