zoukankan      html  css  js  c++  java
  • C++面试(一)

    1. 问了全局变量,静态变量,局部变量,分别放在什么内存(堆栈)

    全局变量或者静态变量,它们都放在堆里
    局部变量放在栈里
    堆区,也叫自由存储区.

    栈内存

    • 程序自动向OS申请分配以及回收,速度快,使用方便

    • 但程序员无法控制。若分配失败,则提示栈溢出错误。

    • 注意,const局部变量也储存在栈区内,栈区向地址减小的方向增长。

    堆内存

    • 程序员向OS申请一块内存,当系统收到程序的申请时,会遍历一个记录空闲内存地址的链表,寻找第一个空间大于所申请空间的堆结点

    • 然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序。

    • 分配的速度较慢,地址不连续,容易碎片化

    • 此外,由程序员申请,同时也必须由程序员负责销毁,否则则导致内存泄露


    2. 红黑树

    • 红黑树,一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。

    • 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。

    • 红黑树,作为一棵二叉查找树,满足二叉查找树的一般性质。下面,来了解下二叉查找树的一般性质。

    二叉查找树

    二叉查找树,也称有序二叉树(ordered binary tree),或已排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树:

    • 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
    • 若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
    • 任意节点的左、右子树也分别为二叉查找树。
    • 没有键值相等的节点(no duplicate nodes)。

    因为一棵由n个结点随机构造的二叉查找树的高度为lgn,所以顺理成章,二叉查找树的一般操作的执行时间为O(lgn)。但二叉查找树若退化成了一棵具有n个结点的线性链后,则这些操作最坏情况运行时间为O(n)

    红黑树虽然本质上是一棵二叉查找树,但它在二叉查找树的基础上增加了着色和相关的性质使得 红黑树 相对平衡,从而保证了红黑树的查找、插入、删除的时间复杂度最坏为O(log n)

    如何保证一棵n个结点的红黑树的高度始终保持在logn的呢?这就引出了红黑树的5个性质:

    1. 每个结点要么是红的要么是黑的。  
    2. 根结点是黑的。  
    3. 每个叶结点(叶结点即指树尾端NIL指针或NULL结点)都是黑的。  
    4. 如果一个结点是红的,那么它的两个儿子都是黑的。  
    5. 对于任意结点而言,其到叶结点树尾端NIL指针的每条路径都包含相同数目的黑结点。

    参考:https://my.oschina.net/hosee/blog/618828

    3. hashmap如何实现

    https://www.cnblogs.com/baiqiantao/p/5635931.html

    4. 常考面试题

    C/C++方向:

    • 指针与引用的区别
    • const 关键字与static关键字
    • malloc 与 new区别
    • 堆与栈区别
    • 多态,虚指针,虚函数表。
    • 析构函数为什么是虚函数。
    • STL中容器

    网络方向:

    • TCP UDP区别
    • TCP三次握手四次挥手
    • TCP流量控制拥塞控制

    操作系统方向:

    • 进程调度算法
    • 进程线程区别
    • 进程IPC方式
    • 进程同步与互斥
    • 页面调度算法

    数据结构与算法方向:

    • 排序算法
    • 查找算法
    • 字符串,矩阵算法
    • 哈希表
    • 堆结构
    • 海量数据处理

  • 相关阅读:
    jQuery动态效果学习笔记
    jQuery HTML操作学习笔记
    学习编程有必要做笔记吗?
    2017阿里巴巴面试技术挑战赛试题泄露
    来自IOS开发工程师的零基础自学HTML5经验分享
    前端学习笔记之HTML DOM操作
    web前端攻城狮整理的收藏夹
    WEB前端开发初学者必看的学习路线(附思维导图)
    搜狗员工用百度算什么,谷歌员工当着老板的面用bing,结果悲剧了!
    常用站长工具软件汇总,有没有一款你在用?
  • 原文地址:https://www.cnblogs.com/douzujun/p/10514092.html
Copyright © 2011-2022 走看看