基础面试题
文章平均质量分 57
程序猿王老铁
心有猛虎,细嗅蔷薇
展开
-
Android面试题:MVC、MVP、MVVM
具有控制的部分功能,若想无限增强它的功能,甚至控制器的全部功几乎都可以迁移到各个View上(不过这样不可取,那样View干了不属于它职责范围的事情)。你看到界面异常了,有可能是你 View 的代码有 Bug,也可能是 Model 的代码有问题。客户端开发最常用的重用是View,但是数据双向绑定技术,让你在一个View都绑定了一个model,不同模块的model都不同。2.Model:对数据库的操作、对网络等的操作都应该在Model里面处理,当然对业务计算,变更等操作也是必须放在的该层的。原创 2023-08-24 10:57:37 · 1747 阅读 · 0 评论 -
【Android基础面试题】ViewPager与ViewPager2的区别
ViewPager2提供了一些新的功能,如无从右到左(RTL)的布局支持和停用用户输入的功能(setUserInputEnabled、isUserInputEnabled)。ViewPager2内部实现了懒加载,默认不进行预加载,通过Lifecycle对Fragment的生命周期进行管理。ViewPager2的内部实现是RecyclerView,而ViewPager是通过继承自ViewGroup实现的。因此,ViewPager2的性能更高。的滑动页面控件,具有更高的性能和更多的功能。原创 2023-08-21 09:53:09 · 1346 阅读 · 0 评论 -
剑指offer:把二叉树打印成多层
问题描述: 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。代码示例:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right...原创 2018-07-11 20:11:24 · 111 阅读 · 0 评论 -
剑指offer:青蛙跳台阶问题
问题描述: 假设有n级台阶,一只青蛙一次能跳1级台阶,一次也可以跳2级台阶,…,它也可以跳上n级台阶,问青蛙一共有多少种跳法。 思路:使用递归的方法代码示例:class Solution{ public: int JumpFloorII(int munber){ int result = 0; if...原创 2018-07-11 20:06:29 · 287 阅读 · 0 评论 -
剑指offer:计算一个整数,二进制数中1的个数
问题描述: 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。解题思路: 可以与上比他小1的数,当等于0时不进行操作代码示例:class Solution{ public: int NumberOf1(int n){ int count = 0; while(n){ ...原创 2018-07-11 20:04:16 · 196 阅读 · 0 评论 -
剑指offer:逆置打印链表
从尾到头打印链表 题目描述: 输入一个链表的头结点,从尾到头反过来打印出每个节点的值。解题思路:1.通过借助容器vector和栈stack共同完成 ----后进先出 2.不使用栈结构stack,直接利用翻转函数reverse()函数和容器vector 3.不使用容器vector,直接用print结合递归方式实现链表的反向打印相关代码://链表结构体定义str...原创 2018-06-04 12:47:31 · 130 阅读 · 0 评论 -
剑指offer:替换空格
替换空格 题目: 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解题思路: (1)我们首先会想到从前往后遍历,遇见空格的时候就替换,但是这样1个字符替换成3个字符,我们必须将空格后面的所有字符往后移动两个字节,否则就有两个字符被覆盖,不建议这样的做法,这样一来时间复杂度为O...原创 2018-06-04 12:25:01 · 222 阅读 · 0 评论 -
剑指offer:二维数组中查找
二维数组中某元素的查找: 题目: 在一个二维数组中,每一行都按照从左到递增的顺序排列,列每一都按照从上到下递增的顺序排列请完成一个函数,输入这样的一个二维数组和一个,判断数组中是否含有该整数。解题思路: 首先选取数组中右上角的数字,如果该数字等于要查找的数字,查找过程结束; 如果该数字大于要查找的数字,剔除这个数字所在的列; 如果该数字小于要查找的数字,剔...原创 2018-06-04 11:59:20 · 162 阅读 · 0 评论 -
面试题:虚函数与纯虚函数的区别
1.虚函数和纯虚函数可以定义在同一个类中,含有纯虚函数的类被称为抽象类,而只含有虚函数的类不能被称为抽象类。2.虚函数可以被直接使用,也可以被子类重载以后,以多态的形式调用,而纯虚函数必须在子类中实现该函数才可以使用,因为纯虚函数在基类有声明而没有定义。3.虚函数和纯虚函数都可以在子类中被重载,以多态的形式被调用。4.虚函数和纯虚函数通常存在于抽象基类之中,被继承的子类重载,目的是提供...原创 2018-09-03 17:21:11 · 4069 阅读 · 0 评论 -
n!的末尾0的个数
题目描述: 输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n = 10; n! = 3628800,所以答案为2 。解题思路: 对于这样的问题,我们可以换个思维方式,它要求0的个数,那么0是怎么来的? 是不是一对2*5得到的0,所以我们可以分解这个问题分,把他看作是求整数n分解质因数后,一共有多少组min(2,5),在当然2的个数肯定比5多,所以我们继续往...原创 2018-07-30 14:24:55 · 3669 阅读 · 0 评论 -
面试题:实现一个只能在堆上(栈上)生成对象的类
简述问题:1、只能在堆上生成对象:将析构函数设置为私有。原因:C++是静态绑定语言,编译器管理栈上对象的生命周期,编译器在为类对象分配栈空间时,会先检查类的析构函数的访问性。若析构函数不可访问,则不能在栈上创建对象。2、只能在栈上生成对象:将new和 delete 重载为私有。原因:在堆上生成对象,使用new关键词操作,其过程分为两阶段:第一阶段,使用new在堆上寻找可用内存,分配给对象;第二阶段...原创 2018-04-25 15:35:40 · 921 阅读 · 0 评论 -
面试题:用C++实现一个不能被继承的类
剑指offer面试题:用C++实现一个不能被继承的类因为子类继承父类,子类的构造函数和析构函数会调用父类的构造,解决问题的方法就是,不允许子类的构造函数调用父类的构造与析构。--------------------------------------------------------------------将父类的构造函数和析构函数设置为private成员函数,私有成员只能被自身的类访问。1./...原创 2018-04-25 14:49:36 · 603 阅读 · 0 评论 -
面试题:判断大小端问题
面试题:请简述大端字节序与小端字节序的概念,设计一个程序来判断当前机器的字节序。概念:大端字节序就是低位地址存放高位字节,高位地址存放低位字节,小端则与之相反。例:0x 00 00 00 01小端字节序:低字节放在低地址01000000低地址 ...原创 2018-04-25 14:24:55 · 1329 阅读 · 0 评论 -
一个有趣的智力题,可以看看
题目“从前,有个小岛上只住着和尚。有些和尚的眼睛是红色的,而另一些的则是褐色。红色眼睛的和尚受到诅咒,如果得知自己的眼睛是红色的,那么当晚12点必须自行了断。(因为受到诅咒,所以只要得知自己的眼睛是红色的,则必须选择自杀,无一例外。)”和尚们之间有一条不成文的规定,彼此不能提起对方眼睛的颜色。小岛上没有一面镜子,也没有可以反射自己容貌的物体。因此,没有任何人能够得知自己眼睛的颜色。出于这些...原创 2018-03-27 13:12:29 · 8444 阅读 · 3 评论 -
strcpy,strcat,strcmp,strstr的模拟实现
用my_strcpy、my_strcat、my_strcmp、my_strstr这四个函数来分别模拟实现库函数strcpy、strcat、strcmp、strstr。1.strcpy strcpy(dest,src)函数是把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间中,而且src和dest所指内存区域不可以重叠。这就要求dest必须有足够的空间来容纳src的字符串原创 2018-04-01 23:17:33 · 188 阅读 · 0 评论 -
判断是否平衡树的优化算法
平衡二叉搜索树左右高度差不超过1 高度可以保持在log2N,插入/删除/查找效率log2N1.左边增加结点,bf–,右边增加结点,bf++ 2.如果增加过后,bf==0,说明高度不变,填平了矮的一边 3.如果bf==|1|,说明本来平衡,继续往上更新bf 4.如果bf==|2|,不再更新,开始调整旋转 1.左单旋/右单旋 2.右左双旋/左右双旋面试题判断一个二叉树是...原创 2018-03-25 16:56:20 · 339 阅读 · 0 评论 -
常见排序算法
常见排序:1、直接插入排序 在给定数组中,拿出一个数M,与前面的数相比较,如果M大于前面的数,位置不变,如果小于前面的数,就依次比较,将大于M的数依次往后挪,找到M的正确排序的位置。 2、希尔排序 希尔排序是1959 年由D.L.Shell 提出来的,相对直接排序有较大的改进。希尔排序又叫缩小增量排序 基本思想: 先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个原创 2017-11-23 20:27:36 · 300 阅读 · 0 评论 -
大数据问题面试题
1、给一个超过100G大小的 log file,log中存着IP地址,设计算法找出出现次数最多的IP地址? 由于超过100G,那必须对文件进行切分。 (1)切分,可以切成100份,每份有1G,那哈希表的大小就是100,利用字符串哈希算法将字符串IP转换成整型 (2)过哈希切分,同一个ip就会分割到同一个文件。 (3)是依次将这100个文件读入内存中,统计ip出现的次数,依次进行比较,原创 2017-11-18 23:43:21 · 731 阅读 · 0 评论 -
malloc/free与new/delete
malloc/free与new/delete不同点:操作对象有所不同。 malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象消亡之前要自动执行析构函数。 由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行原创 2017-11-18 22:50:16 · 163 阅读 · 0 评论