c/c++岗位准备

一.简介

1)公司介绍:

以视频为核心的智能物联网解决方案和大数据服务
是领先的安防产品及行业解决方案提供商,公司致力于不断提升视频处理技术和视频分析技术,面向全球提供领先的安防产品、专业的行业解决方案与优质的服务,为客户持续创造更大价值

2).岗位职责

1、根据项目需求、公司的相关规范,完成所负责模块的设计、开发工作;
2、分析并解决软件开发、测试、部署、使用过程中的问题;
3、参与撰写产品需求、总体设计、概要设计、详细设计等相关技术文档。

3).要求

1、本科及以上学历,计算机、电子信息等相关专业;
2、熟练掌握C++语言开发,注重用户体验;
3、熟悉Socket网络编程和TCP\IP等常用网络通信协议,熟悉多线程开发;
4、具有较强的质量意识和学习能力,有良好的沟通能力和团队协作精神。

二. 面经:

1) 自我介绍~架构师

1.你得是个程序员,需要能基本了解常用平台,语言,数据库等的特点,并能根据需求搭配出适用的开发配置方案,然后你得会写代码,必须知道怎么写代码才是性价比最高的。 从开发、部署、运行、维护态 知识储备 技术选型能力
优秀软件架构师同时也是出色的软件开发者
2.你得是行业顾问,至少得了解行业的特色,能找到需求问题的切入点,能够合理安排每个环节的联系结点。
3.你得具有技术说服力,横向沟通能力,能把你所构思的想法说给别人听,并能让别人理解并接受你的设计想法。
4.你得具有丰富的想象力,要有大局观 确认需求 一个架构师得需要足够的想象力,能把各种目标需求进行不同维度的扩展,为目标客户提供更为全面的需求清单。
5.你得尽可能的了解最新资讯,更新最新技术理论,虽然不一定需要去学习或掌握,但需要知道新的技术能用在哪种情况中,资讯能给你带来更多业界动态。
架构师应该是一个程序玩家,至少我是这么认为的,把写目标程序代码看做是一种游戏,我经常是这么在做,在有空的时候会自己想点东西出来写写娱乐一下。
6.你得需要多做项目,项目的积累是非常重要,以设计模式来说,设计模式的名字是人定的,应用设计多了,自然而然的会将模式应用到系统中,在这过程中你并不会知道你所设计的应用到哪些模式,你只会知道要实现这个功能需要怎么做,当你有空的时候会不经意间发现原来这种做法还有个模式名。

  1. 对业务所面临的挑战的理解,从业务挑战到技术挑战映射的能力,或者说技术抽象的能力;
  2. 知识储备以及考虑的全面性,从开发、部署、运行、维护态;
  3. 技术选型能力,极厚的技术功底,开阔的技术视野;
  4. 在各种约束条件下权衡选择的能力,原则。
    需要长期的实战、经验积累
    • 架构应该是和商业对齐,甚至是业务生态圈对齐。
    • 其次,在商业中挖掘收益点。
    • 最后,将这些收益点设计一个可产品化的架构。
    优秀软件架构师同时也是出色的软件开发者,他们都是经过时间逐渐发展成为架构师的。你需要有退后一步看代码的能力,从而理解特定软件系统背后的设计决策。退后一步才能看到“大局

PPT 架构师。
不懂编程的架构师的职业生涯必定是短暂的,无论如何都不可本末倒置,要想实现自己的职业规划,不能荒废自己本身的技能,技术是架构师赖以生存的最基本能力。

2) 基础知识

①const

const修饰常量,定义指针,成员变量
指针和引用
1.指针是地址,引用是别名,
2.指针在运行时可以改变所指向的值,而引用一旦与某个对象绑定后就不再改变。意思是:指针可以被重新赋值以指向另一个对象,但是引用则总是在初始化时被指定的对象,以后不能改变,但是指向的内容可以改变
3.程序为指针变量分配区域,而不为引用分配内存区域。因为引用生命时必须初始化,从而指向一个已经存在的对象,引用不能为空值。
list和vector的底层实现
1.vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。
因此,它能够高效地进行随机存取,时间复杂度是O(1)。
但是,在进行插入和删除操作时,会造成内存块的拷贝,因此时间复杂度为O(n)
2.list是由双向链表实现的,因此内存空间是不连续的。
其只能通过指针访问数据,所以list的随机存取效率很低,时间复杂度为O(n)。
不过由于链表自身的特点,能够进行高效的插入和删除。

父子类构造顺序,析构顺序
构造子类时,先执行父类的构造函数,然后执行子类的构造函数
析构子类时,先执行子类的析构函数,然后执行父类的析构函数。

② 多态

用父类的引用指向子类的对象。多态可以理解成“一个接口,多种实现”,就是同一种事物表现出的多种形态,多态允许将子类的对象当作父类的对象使用,某父类型的引用指向其子类型的对象,调用的方法是该子类型的方法。
多态存在的三个必要条件
1,要有继承
2,要有重写
3,父类引用指向子类对象
不能
1、static方法,因为被static修饰的方法是属于类的,而不是属于实例的
2、final方法,因为被final修饰的方法无法被子类重写
3、private方法和protected方法,前

封装
也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。
继承
指可以让某个类型的对象获得另一个类型的对象的属性的方法

问到虚函数表中的指针存放在哪里,应该是全局静量区

手写工厂模式
手写希尔排序

C/C++ 等都是编译型语言
计算机网络有几层(传输层有

你可能感兴趣的:(面试,c++,c语言)