![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
找工作-面试笔试
文章平均质量分 57
爱很遥远
事有其道
展开
-
大数相乘计算
面试中经常会考的题目,两个大数相乘的问题。直接上代码:#include #include using namespace std;void multiply(string num1, string num2){ // 判断入参是否为空,是否为数字 // 省略 // 正负问题,符号与值分开处理,计算值后再加上 // 省略 // 乘积的位数是乘数的位数的和或者乘数位数和减原创 2016-04-20 00:01:33 · 264 阅读 · 0 评论 -
实现一个getMin功能的栈
题目:实现一个特殊的栈,在实现栈基本功能的基础上,再实现返回栈中最小元素的操作。要求pop、push、getMin时间复杂度都是O(1),设计时使用现成的栈结构。 用C++实现了一下。template class MyStack{public: void Push(const T& t) { m_data.push(t); if原创 2017-02-12 21:47:44 · 484 阅读 · 0 评论 -
用两个栈实现一个队列的基本功能
题目:用两个栈实现队列的基本功能。 实现:一个栈用于接受输入,一个用于输出,仅当输出栈空时,将输入栈中的数据一次性压入输出栈。以下实现中,该动作在pop和front中进行。 C++实现如下:template class MyQueue{public: void Push(const T& t) { m_in.push(t); }原创 2017-02-12 23:00:05 · 392 阅读 · 0 评论 -
最长公共子串问题
程序员代码面试指南:最长公共子串问题动态规划:dp[M][N]矩阵,d[i][j]原创 2017-03-01 20:41:04 · 466 阅读 · 0 评论 -
矩阵最短路径和
程序员面试指南中的一个题目: 给定一个矩阵m,从左上角开始每次只能向右或向下走,最后达到右下角的位置,路径上所有数字的累加和就是路径和,求所有路径中的最小路径和。 根据动态规划实现,构建矩阵dp,dp[i][j]为从左上角(0,0)到(i,j)的最小路径和。对于第一行,只能向右累加;对于第一列,只能向下累加。其他位置都是从其左侧或上面的点中选择较小的值再加上该节原创 2017-02-26 12:42:30 · 752 阅读 · 0 评论 -
最长递增子序列
程序员代码面试指南:最长递增子序列,给定数组arr,返回其最长递增子序列。动态规划:生成数组dp, dp[i]表示以arr[i]结尾的最长子序列的长度。dp[0] = 1,dp[i]=max{dp[j]+1, j 从dp中得到最大值即为最长子序列的长度,其下标对应的arr中的值即为子序列的最后一个值。从该值开始向前遍历,如果前面一个值满足arr[j]C++实现:void getDP原创 2017-02-26 22:43:14 · 1013 阅读 · 0 评论 -
memmove和memcpy函数
两个函数都在头文件string.h中定义,函数原型为: void * __cdecl memcpy(void *dst, const void *src, size_t count); void * __cdecl memmove(void *dst, const void *src, size_t count);实现代码如下:void * __转载 2017-03-31 10:56:40 · 305 阅读 · 0 评论 -
如何定位CPU占用过高问题
程序运行后出现CPU占用过高,一般是代码有死循环等。top命令可以查看CPU使用情况,找到问题进程。对CPU使用过高的进程的所有线程进行排序ps H -e -o pid,tid,pcpu,cmd --sort=pcpu | grep xxx得到CPU占用率最高的线程的线程号,比如2907进程的线程2909使用gdbgdbgdb>attach 2907gd原创 2017-04-01 09:27:09 · 2747 阅读 · 0 评论 -
C++11 bind函数
bind标准库函数,定义在头文件functional中。可以将bind函数看作一个通用的函数适配器,它接受一个可调用对象,生成一个新的可调用对象来“适应”原对象的参数列表。 调用bind的一般形式为: auto newCallable = bind(callable,arg_list); 其中,newCallable是一个可调用对象,arg_l原创 2017-04-13 13:55:14 · 400 阅读 · 0 评论 -
最长公共子序列问题
程序员代码面试指南: 给定两个字符串str1和str2,返回最长公共子序列,存在多个时返回任意一个即可。动态规划: str1长度设为M,str2长度设为N,构建dp[M][N]。d[i][j]表示str1[0:i]和str2[0:j]的最长公共子序列的长度。 1.第一列,d[i][0]表示str1[0:i]与str2[0]的最长公共子序列长原创 2017-02-28 21:42:20 · 261 阅读 · 0 评论 -
线程函数和类成员函数
创建线程时,需要指定线程的入口函数。一般来讲,线程函数为全局函数或静态函数。类的成员函数默认含有this指针作为参数,与线程函数指针类型不匹配,不能将类的成员函数指定为线程函数。如何在线程中执行类的成员函数或者访问数据成员呢? 最常用的方法就是线程函数还是用全局或静态函数,然后把类对象指针或this作为线程函数参数传入,在线程函数中将void类型参数强转为对应类型,再去操作。原创 2016-12-22 15:50:29 · 670 阅读 · 0 评论 -
STL面试问题归总
面试中遇到几个跟STL相关的问题,自己在平时工作中用的不多,很多基础都比较欠缺。回来后查了一下,记录以供后续学习。 问题1、vector的clear函数会释放内存空间吗?如何主动释放被占用的内存空间?当vector、string大量插入数据后,即使删除了大量数据(或者全部都删除,即clear)并没有改变容器的容量(capacity),所以仍然会占用着内存,只析构元素。《Effect原创 2016-11-08 17:18:43 · 856 阅读 · 0 评论 -
面向对象相关面试题归总
面试中遇到几个面向对象相关的基础问题,记录以供后续学习。 问题1、设计一个不能被继承的类。一个类不能被继承,也就是说它的子类不能构造父类,这样子类就没有办法实例化整个子类从而实现子类无法继承父类。我们可以将一个类的构造函数声明为私有,使得这个类的构造函数对子类不可见,那么这个类也就不能继承了。但是,这引出一个问题,客户程序岂不是也无法实例化这个类了?参考一下Singleton模式,用一原创 2016-11-09 18:20:20 · 409 阅读 · 0 评论 -
面试中的Linux命令-lsof、find
查看文件被哪些进程打开,以及进程打开的文件。使用lsof命令list open filelsof filename 查看打开filename文件的进程lsof –p pid 查看pid进程打开的文件lsof –c string 查看进程命令中包含string的进程打开的文件 查看最近5分钟内修改的文件find . –mmin -5find命令可以根据时间戳属性查找文原创 2016-11-15 22:21:06 · 485 阅读 · 0 评论 -
智能指针
在C/C++编程中,指针的使用非常重要。但是在使用指针时有一个问题就是容易忘记释放相关资源,尤其是堆内存,造成内存泄漏。基于这个原因,出现了智能指针。智能指针其实是一个栈对象,当离开其生命周期时,其析构函数会被调用,我们在析构函数中将资源释放,这样就实现了自动回收的效果。这里主要介绍三种auto_ptr(C++11已摒弃)、unique_ptr、shared_ptr。对于所有智能指针来说,使用原创 2016-11-12 12:23:39 · 367 阅读 · 0 评论 -
指针和引用
指针保存一个对象的地址,通过该地址访问对象;引用是对象的别名。二者在概念及使用上需要分清楚。 引用不可以为空,指针可以为空。定义一个引用的时候,必须初始化;声明指针是可以不指向任何对象,即空指针。因此如果一个变量是用于指向另一个对象,它可能为空,这时你应该使用指针;如果变量总是指向一个对象,且不允许变量为空,这时你应该使用引用。由于指针可能为空,使用指针之前必须做判空操作,而引用就原创 2016-11-12 22:33:25 · 387 阅读 · 0 评论 -
malloc与new分配内存
malloc()函数(memory allocation)分配指定长度的内存块。如果分配成功则返回指向被分配内存的指针,分配失败返回NULL。当内存不再使用时,应使用free()函数将内存块释放,防止内存泄漏。返回类型是void*类型。void*表示未确定类型的指针,即申请内存空间时还不知道存储什么类型的数据。C,C++规定,void*类型可以强制转换为任何其它类型的指针。申请了内存空间后原创 2016-11-13 18:01:14 · 1886 阅读 · 0 评论 -
C语言中分配内存的函数
malloc:函数原型:extern void *malloc(unsigned int num_bytes);功能:分配长度为num_bytes字节的内存块返回值:如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回空指针NULL。void* 表示未确定类型的指针,更明确的说是指申请内存空间时还不知道用户是用这段空间来存储什么类型的数据。C,C++规定,v原创 2016-11-13 18:29:30 · 773 阅读 · 0 评论 -
函数指针
本文不涉及函数的底层实现原理,只是讲述一下一般函数指针和类成员函数指针的声明和使用。一般函数指针相对简单,例如: int max(int x, int y) { return x > y ? x : y; } int (*pfunc)(int, int); pfunc=原创 2016-11-15 08:59:14 · 199 阅读 · 0 评论 -
std::sort排序算法
std::sort的声明语法:template void sort ( RandomAccessIterator first,RandomAccessIterator last );template void sort ( RandomAccessIterator first,RandomAccessIterator last, StrictWeakOrdering comp );原创 2017-06-07 18:13:25 · 16203 阅读 · 1 评论