1.leetcode

Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.

https://blog.csdn.net/freeelinux/article/details/60472659

http://www.cnblogs.com/willaty/default.html?page=2

python

https://www.cnblogs.com/Lin-Yi/

2.coding interview

https://github.com/fangniu/TargetOffer/

3. c++

陈硕

多线程服务器的常用编程模型

https://www.cnblogs.com/Solstice/category/290530.html

小米面试总结
 
       总结一下前段时间小米面试的题目吧,考察了很多C11的新特性,由于自己也没怎么准备,而且公司只准使用C99开发,所以很多都忘记了,答的并不是很好在这上面,所以自己也需要重新回顾下C11的知识点了。
       有时间也会将C++重新回顾的知识重点写成博客,供大家一起学习,有错误的地方希望指正,共同进步,因为有些问题是我自己总结的,所以难免会有错!!!
1.STL中的容器vector,size和capacity的区别?
解释:size是已存在vector中的元素数目,而capacity则是在不分配新的内存空间的前提下最多可以保存的元素数目,如果从重新分配了内存一般是以原内存的2倍方式增长。
2.如何避免C++中的隐式转换?
解释:在构造函数中可以通过explicit声明为显示转换,函数中可以参考http://blog.csdn.net/LaineGates/article/details/50599218
3.了解MVC框架么?和你的ESP框架有什么不同么?
解释:其实ESP采用的就是MVC框架,也就是模型(model)-视图(view)-控制器(controller)。百度解释如下:
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
          其实用我个人编程角度解释就是,模型相当于一个对象或者说我们需要实现的具体逻辑业务,而视图可以理解为界面,也就是说我们需要处理的逻辑业务通过Html界面显示即视图,而控制器可以理解为通过Html界面传过来的路由即action,后台处理界面传过来的数据处理部分即可以理解为控制器。
4.你了解vector的内部实现么?
解释:vector是动态增加内存大小的,所谓动态增加并不是指在原空间之后持续新空间(因为无法保证原空间之后尚有可配置的空间),而是以原大小的2倍另外配置一块新的空间,然后将原内容拷贝过来。然后才在原内容之后构造新数据,并释放原空间。因此一旦内存被重新分配,则指向容器的迭代器,指针和引用都会失效。
5.2选1编程题不查网络,①实现scope_ptr内部实现②关于视频方面的,矩阵变换方面的题(用代码实现)
6.往verctor中添加一个元素,size会变大,capacity也会变大么?如何实现的?
解释:size是肯定会变大的,而capacity要看情况,如果已经满载的情况,那么capacity会变大,并且为2倍扩容,如果内存空间足够,那么capacity不会变大,总之capacity大于或等于size。
7.删除一个迭代器,还能使用么?
解释:对于序列式容器(如vector、queue)删除迭代器,会使后面所有元素的迭代器都失效,对于关联容器(如map、set等)删除迭代器,只会使当前迭代器失效(和内部实现有关系,关联容器红黑树存储)
8.Apache和ESP有什么区别?Appweb和Httpd有啥区别?

解释:因为apache没使用过,所以没总结。

9.调用一个普通函数和调用系统函数有啥区别?
解释:简单解释为普通函数调用发生在用户态,而系统调用发生在内核态,系统调用都会为用户提供系统接口(API),来维护内核的稳定和安全性。比如:我们开启一个进程那么会调用系统函数fork(),又比如printf底层调用的是write函数。
函数库调用
系统调用
在所有的ANSI C编译器版本中,C库函数是相同的
各个操作系统的系统调用是不同的
它调用函数库中的一段程序(或函数)
它调用系统内核的服务
与用户程序相联系
是操作系统的一个入口点
在用户地址空间执行
在内核地址空间执行
它的运行时间属于“用户时间”
它的运行时间属于“系统时间”
属于过程调用,调用开销较小
需要在用户空间和内核上下文环境间切换,开销较大
在C函数库libc中有大约300个函数
在UNIX中大约有90个系统调用
典型的C函数库调用:system fprintf malloc
典型的系统调用:chdir fork write brk;
10.为什么要使用虚函数?
解释:降低了耦合度,使代码模块实现分层,增加模块之间可扩展性和可维护性
11.说说静态库和动态库的区别
解释:静态库发生在编译和链接时期,也就是在链接过程中将目标文件(.o文件)一起打包到可执行文件中,所以静态库的体积会比较大,所以静态库比较浪费空间和资源,而动态库是在程序运行时动态载入的,灵活性更大,有利于程序更新、以及代码改动,因为如果是静态库需要重新全部编译。
12.还是静态库和动态库,假如一个程序调用了A和B两个静态库,A和B再调用C静态库,请问能编译通过么?为什么?
解释:不能,因为会出现重复定义,这也就是为什么会有动态库了
13.了解C++11的nullptr和C99里面的指针NULL赋初始值为0的区别么?
解释:nullptr就代表一个空指针常量,而C99里面的NULL指针在C99中是被定义为0的,为什么引入nullptr主要是解决C++中重载带来的二义性。具体参考博客https://www.cnblogs.com/nothx/p/8523191.html
14.你们为什么要选择Appweb而不是Apache?
解释:因为我们是嵌入式开发,而Apache太大我们并不需要,Appweb的功能能满足我们的需求。
15.你了解map么,请问内部实现是什么?(红黑树存储的,问关于红黑树的实现)
解释:这个网上很多,不在博客中说了。
16.SPS是什么?PPS是什么?SPS和PPS的区别?
解释:SPS为序列参数集,PPS为图像参数集。SPS包含的是针对一连续编码视频序列的参数,如标识符seq_parameter_set_id、帧数及POC的约束、参考帧数目、解码图像尺寸和帧场编码模式选择标识等。PPS对应的是一个序列中某一副图像或者某几幅图像,参数如标识符pic_parameter_set_id、可选的seq_parameter_set_id、熵编码模式选择标识、片组数目、初始量化参数和去方块滤波系数调整标识等。
17.AVC和SVC的区别?
解释: H.264SVC (Scalable Video Coding)是以H.264为基础,在语法和工具集上进行了扩展,支持具有分级特性的码流,H.264SVC是H.264标准的附录G,同时作为H.264新的profile。H.264SVC在2007年10月成为正式标准(具体见这篇博客https://www.cnblogs.com/huxiaopeng/p/5653310.html)
18.讲一下对于AAC的了解
解释:这个百度下
19.讲一下H264中的VCL和NAL
解释:VCL为 视频编码层,NAL为网络提取层
20.你知道普遍的音频采样率为多少么?为什么?
解释:常用的音频采样频率有8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz等,因为人耳所能正常人听觉的频率范围大约在20Hz~20kHz之间,根据奈奎斯特采样理论,为了保证声音不失真,采样频率应该是正常人听觉的2倍。
21.你了解可视电话么,一般采样率是多少?
解释:8khz
22.PTS和DTS是什么?
解释:PTS为显示时间戳,DTS为解码时间戳
23.音频(AAC)和视频(H264)的time_base是多少?
解释: h264随着帧率变化例如1:25 aac根据采样率变化例如1:44100
24.给一个视频分辨率(720x576),你知道大概带宽和码率么?
 

https://blog.csdn.net/longbei9029/article/details/79561579

android

https://blog.csdn.net/liangxiaozhang/article/details/17071223

stl

http://fpsalmon.usc.es/manuales/STL/STL_doc/Vector.html

https://blog.csdn.net/jmh1996/article/details/77968364

https://blog.csdn.net/wenqian1991/article/details/19540385

http://www.cnblogs.com/runnyu/default.html?page=1

time_wait

https://blog.csdn.net/usbdrivers/article/details/9294993

动态规划

https://blog.csdn.net/u013616945/article/details/77531097

getClimbingWays

https://www.sohu.com/a/153858619_466939

http://ykksmile.top/posts/55495/

面试

https://blog.csdn.net/hackbuteer1/article/details/7348968

c++11

https://book.douban.com/subject/26419368/

Buffer::Buffer() {
maxBuffer_ = ;
} void Buffer::enqueue(int client) {
unique_lock<mutex> lck(mutex_);
while (queue_.size() >= maxBuffer_) queueNotFull_.wait(lck); queue_.push(client);
queueNotEmpty_.notify_one();
} int Buffer::dequeue() {
unique_lock<mutex> lck(mutex_);
while (queue_.size() == ) queueNotEmpty_.wait(lck); int client = queue_.front();
queue_.pop();
queueNotFull_.notify_one();
return client;
}

https://github.com/SchuylerGoodman/messaging_service

拷贝控制(copy control)

copy control 是拷贝 stack a; stack b = a; 和赋值 stack b; b = a; 的合称。

当拷贝一个 ADT 时会发生什么?比方说拷贝一个 stack,是不是应该把它的每个元素按值拷贝到新 stack?

如果语言支持显示控制对象的生命期(比方说C++的确定性析构),而 ADT 用到了动态分配的内存,那么 copy control 更为重要,不然如何防止访问已经失效的对象?

由于 C++ class 是值语义,copy control 是实现深拷贝的必要手段。而且 ADT 用到的资源只涉及动态分配的内存,所以深拷贝是可行的。相反,object-based 编程风格中的 class 往往代表某样真实的事物(Employee、Account、File 等等),深拷贝无意义。

C 语言没有 copy control,也没有办法防止拷贝,一切要靠程序员自己小心在意。FILE* 可以随意拷贝,但是只要关闭其中一个 copy,其他 copies 也都失效了,跟空悬指针一般。整个 C 语言对待资源(malloc 得到的内存,open() 打开的文件,socket() 打开的连接)都是这样,用整数或指针来代表(即“句柄”)。而整数和指针类型的“句柄”是可以随意拷贝的,很容易就造成重复释放、遗漏释放、使用已经释放的资源等等常见错误。这方面 C++ 是一个显著的进步,boost::noncopyable 是 boost 里最值得推广的库。

http://www.cppblog.com/Solstice/archive/2011/08/16/153593.html

我们首先想到指针,在accept内部new生成一个对象,然后返回指针。但是问题更多,这个对象何时析构? 过早析构,程序发生错误,不进行析构,又造成了内存泄露。
这里的解决方案就是智能指针,而且是引用计数型的智能指针。
typedef boost::shared<Socket> SocketPtr;
SocketPtr accept();
这样外部就可以用智能指针去接收,那么何时析构?当然是引用计数为0,也就是我不再需要这个Socket的时候析构。
这样,我们利用了SockerPtr,实现了跟Java类似的Reference语义。

https://www.zhihu.com/question/20368881

linux多线程默认栈大小和最大线程数

https://blog.csdn.net/cherish_2012/article/details/45073399

第21月第4天 leetcode codinginterview c++的更多相关文章

  1. 第21月第6天 zhihu如何用3个月零基础入门机器学习

    1. 我们应该记住,既成的事实一定有它的道理,如果我们不能理解它,恐怕得从自身找原因.如果你交易股票,请记住,如果预测和市场不一致,错的是预测,而不是市场 https://www.cnblogs.co ...

  2. 如何两个月刷400道leetcode

    前言随着互联网寒潮的到来, 越来越多的互联网公司提高了面试的难度,其中之一就是加大了面试当中手撕算法题的比例.这里说的算法题不是深度学习,机器学习这类的算法,而是排序,广度优先,动态规划这类既考核数据 ...

  3. 第21月第9日 windows下使用vim+ctags+taglist

    1. windows下使用vim+ctags+taglist 最近在公司的同事指导下,学会使用这个东西编写代码,效率提高了不少.所以记录下来,方便大家使用. 1. 下载gvim74.exe文件,并安装 ...

  4. 第21月第7日 数据结构 b+树

    1.B+树 MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等. http://blog.codingla ...

  5. LeetCode刷题专栏第一篇--思维导图&时间安排

    昨天是元宵节,过完元宵节相当于这个年正式过完了.不知道大家有没有投入继续投入紧张的学习工作中.年前我想开一个Leetcode刷题专栏,于是发了一个投票想了解大家的需求征集意见.投票于2019年2月1日 ...

  6. 用JavaScript刷LeetCode的正确姿势

    虽然很多人都觉得前端算法弱,但其实 JavaScript 也可以刷题啊!最近两个月断断续续刷完了 leetcode 前 200 的 middle + hard ,总结了一些刷题常用的模板代码.走过路过 ...

  7. 从心出发-刷leetcode写给5年后的自己

    而立之年终未立,不惑而年犹存惑!这或许就是所谓的中年危机吧! 自认为是一个"勤奋"的人,又"未有寸功",天天碌碌,不知何为. "常立志"而未 ...

  8. javaWeb后端学习记录

    java后端学习重点: 1.java语言特性: 基础知识,集合,多线程,并发,JVM,NIO,网络编程,设计模式.  (★★★★★) jdk源码中有大量的数据结构与java语言细节.jdk源码着重看c ...

  9. 2019上海爱奇艺大数据Java实习生-面试记录

    目录 一轮 电话面试 二轮 代码笔试 三轮 技术面试 总结 附:电话面试问题点解惑 补充:面试未通过 一轮 电话面试 2019.04.28 16:21 [w]:面试官,[m]:我,下面的内容来自电话录 ...

随机推荐

  1. PHP和PHP-FPM 配置文件优化

    前言:乘着这次空闲,来记录下关于PHP和PHP-FPM配置文件的优化,也方便以后自己复习. 先说PHP的 1.PHP脚本执行时间 max_execution_time = 30 该选项设定PHP程序的 ...

  2. 框架: Struts2 讲解 1

    一.框架概述 1.框架的意义与作用: 所谓框架,就是把一些繁琐的重复性代码封装起来,使程序员在编码中把更多的经历放到业务需求的分析和理解上面. 特点:封装了很多细节,程序员在使用的时候会非常简单. 2 ...

  3. Day23--Python--常用模块02--序列化,configparser

    1. 序列化 把对象打散成bytes或者字符串. 方便存储和传输 序列化 把bytes或者字符串转换回对象. 反序列化 2. pickle(比较重要) 把python中所有的对象都可以转化成bytes ...

  4. php mkdir No such file or director问题

    有时使用mkdir创建目录时会出现 No such file or director这样的错误,导致这个错误的原是 比如你要创建目录 a\b\c目录,但是创建时父目录b也不存在时就会出现这样的问题. ...

  5. php中函数里面使用函数外面的变量

    一定要在函数里面声明为全局变量!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(不然会有问题,还是不报错的那种)

  6. 使用PreparedStatement 查询一条数据 封装成一个学生的Student1对象

    package cn.lijun.entity; public class Student1 { private int id; private String sname; private int g ...

  7. Java基础内部类、包的声名、访问修饰符、代码块整理

    内部类 14.1内部类概念 将类写在其他类的内部,可以写在其他类的成员位置和局部位置,这时写在其他类内部的类就称为内部类.其他类也称为外部类. 内部类分为成员内部类与局部内部类. 我们定义内部类时,就 ...

  8. Perl参数

    一.#!/usr/bin/perl -w -w:prints warnings about dubious(可疑的,不确定的) constructs perldoc perlrun#可以查看参数详情 ...

  9. Mysql分页优化

    数据表 collect ( id, title ,info ,vtype) 就这4个字段,其中 title 用定长,info 用text, id 是主键,vtype是tinyint,vtype是索引. ...

  10. Vue项目搭建

    1.环境搭建 安装node 官网下载安装包,傻瓜式安装:https://nodejs.org/zh-cn/ 安装cnpm npm install -g cnpm --registry=https:// ...