下午4点接到一个杭州打过来的电话,阿里巴巴一面。持续时间半个小时。

面试官是阿里云KVStore组。

1.自我介绍,说一下项目

说了下之前在公司做的手绘几何图形规整输出的项目,提了下当时遇到的问题,以及用到的解决方法。也说了下现在组里面在做的表情识别的项目。讲了8分钟的样子。

2.C++STL标准库里的知识

sort的时间复杂度。

这个好简单,O(NlogN),然后我补充了下sort是快排的思想,然后是不稳定的排序算法,是基于泛型编程的思想,除了支持基本的STL中的数据类型,还支持自定义的数据类型进行排序。传进去的是迭代器或者指针,直接操作的地址,然后支持重载,第三个参数可以重写cmp排序规则。

Vector的增长模式。

首先vector是一种顺序容器,动态数组,在声明的时候可以调用构造函数直接开辟一定大小连续的空间。当空间满的时候,重新申请一个2倍的空间,将原来的所有数据考呗过去。

Map底层

红黑树,比较复杂,和multimap的区别。

3.平常怎么调试代码,主要在那个平台

平常主要用vs,Windows下,用过mac下的clion。编译出错,先看是不是语法错误,如果是逻辑错我,通过打log、打断点,定位错误的地方调试。

4.内存泄漏的问题

我只答出了数组越界,指针作用域之外指向地址不明,变野指针,复杂度太高递归次数太多爆栈。答得不好,后来查了下,发现还有好多没说到,C++内存泄漏的几种情况

5.有了解C++的发展么

现在出到了C++17,上一个版本是C++14,17不了解,出了什么智能指针,方便管理内存。我用过的只有aotu关键字。

6.网络编程

问epoll和poll,最近在补,还没看到那块,说了下自己写的TCP的Socket编程,服务器端和客户端的业务逻辑。

7.Linux

同步互斥 文件加锁解锁,线程安全 猝。

我提问环节,让面试官介绍了下他所在部门主要做哪方面。

KVStore,做redis数据存储的,平常是在linux上对内核进行开发优化,也做一部分远程运维。

2017 阿里巴巴 C++后台开发一面 3.14的更多相关文章

  1. SpringBoot技术栈搭建个人博客【后台开发】

    前言:在之前,我们已经完成了项目的基本准备,那么就可以开始后台开发了,突然又想到一个问题,就是准备的时候只是设计了前台的RESTful APIs,但是后台管理我们同样也是需要API的,那么就在这一篇里 ...

  2. 【分享】Java后台开发精选知识图谱

    地址 引言: 学习一个新的技术时,其实不在于跟着某个教程敲出了几行.几百行代码,这样你最多只能知其然而不知其所以然,进步缓慢且深度有限,最重要的是一开始就对整个学习路线有宏观.简洁的认识,确定大的学习 ...

  3. ABP开发框架前后端开发系列---(14)基于Winform的ABP快速开发框架

    前面介绍了很多ABP系列的文章,一步一步的把我们日常开发中涉及到的Web API服务构建.登录日志和操作审计日志.字典管理模块.省份城市的信息维护.权限管理模块中的组织机构.用户.角色.权限.菜单等内 ...

  4. Java后台开发精选知识图谱

    1.引言: 学习一个新的技术时,其实不在于跟着某个教程敲出了几行.几百行代码,这样你最多只能知其然而不知其所以然,进步缓慢且深度有限,最重要的是一开始就对整个学习路线有宏观.简洁的认识,确定大的学习方 ...

  5. 后台开发:核心技术与应用实践 -- C++

    本书介绍的"后台开发"指的是"服务端的网络程序开发",从功能上可以具体描述为:服务器收到客户端发来的请求数据,解析请求数据后处理,最后返回结果. C++编程常用 ...

  6. 给大一的学弟学妹们培训java web的后台开发讨论班计划

    蓝旭工作室5月大一讨论班课程计划   课时 讨论班性质 讨论班名称 主要内容 主讲人   第一讲 先导课 后台开发工具的使用与MySQL数据库基础 后台开发工具的基本使用方法与工程的创建,MySQL数 ...

  7. discuz后台开发常用函数

    showsetting()表单显示 返回值:无 参数: $setname - 指定输出标题,如:setting_basic_bbname, 自动匹配描述文字为:setting_basic_bbname ...

  8. php后台开发(二)Laravel框架

    php后台开发(二)Laravel框架 为了提高后台的开发效率,往往需要选择一套适合自己的开发框架,因此,选择了功能比较完善的Laravel框架,仔细学来,感觉和Python语言的框架Django非常 ...

  9. php后台开发(一)hello world

    php后台开发(一)hello world 环境安装 开发环境为Ubuntu 12.04,选择linux+apache+php的开发环境 安装 apache2 sudo apt-get install ...

随机推荐

  1. 【神经网络与深度学习】Google Snappy - 一个高速压缩库

    Snappy已经被Google开源,作为一个压缩库,它可以利用单颗Intel Corei7处理器内核处理至少每秒250MB~500MB的数据流. Snappy的前身是Zippy.虽然只是一个数据压缩库 ...

  2. 旗舰版win7系统中GraphEdit执行Loading a Graph From an External Process失败对策

    操作系统:旗舰版win7 DirectShow SDK: 9.0 IDE环境:VS2008 以下代码参考MSDN: HRESULT AddToRot(IUnknown *pUnkGraph, DWOR ...

  3. Windows系统中CMD wmic查看硬盘、内存、CPU、BIOS、网卡等信息。(附带脚本)

    目录 Windows系统中CMD wmic查看硬盘.内存.CPU.BIOS.网卡等信息. 查看内存相关 查看内存主板数量(两条命令均可) 查看物理内存 查看逻辑内存 查看缓存 查看虚拟内存 查看网络相 ...

  4. springboot整合springdatajpa时jar冲突

    1.springboot整合springdatajpa测试时报No bean named 'entityManagerFactory' available错误 2.运行springboot主程序时报以 ...

  5. 数据库索引 B+树

    问题1.数据库为什么要设计索引?索引类似书本目录,用于提升数据库查找速度.问题2.哈希(hash)比树(tree)更快,索引结构为什么要设计成树型?加快查找速度的数据结构,常见的有两类:(1)哈希,例 ...

  6. PageObject 页面对象模式

    一.PageObject 页面对象设计模式  (一个页面建一个类,即对象,页面对象) 每个页面都建对应的class,类中包含了页面的输入框.标题.元素等元素,测试代码中测试这个页面时,只需要调用这个页 ...

  7. Mysql-Sqlalchemy-增删改查分组等操作

    #!/usr/bin/env python # -*- coding:utf-8 -*- from sqlalchemy.ext.declarative import declarative_base ...

  8. Docker 添加容器SSH服务

    很多时候我们需要登陆到容器内部操作,此时我们就需要开启容器的SSH支持了,下面的小例子将具体介绍三种分配IP地址的方法,分别是pipworl分配,commit分配,Docker分配等. 基于commi ...

  9. CALL apoc.cypher.doIt创建动态节点的时候怎么指定多个标签?

    下面的创建节点实例,请教一下CALL apoc.cypher.doIt如何创建多个标签?现在的方式是只能指定一个标签! UNWIND [{name:"sdasdsad234fdgsasdfa ...

  10. mac 下安装mysql8.0

    有两种安装方式,一种是安装包安装,官网下载安装包,mysql8.0下载.mysql5.7安装: 这里记录brew安装: 1.brew uninstall mysql 卸载原有的: 2.brew ins ...