- 博客(79)
- 资源 (3)
- 问答 (2)
- 收藏
- 关注
原创 【C++实习生】每天十道面试题打卡
第二十天打卡,暂时会搁置一段时间,我需要学两个开源项目,可能是两周也可能更久,等把开源项目摸透了,会专门出一篇文章的,在等待的日子里,希望大家多多把已有的知识掌握,那么面试也就不难了。
2022-03-17 20:35:03
1026
原创 【C++实习生】每天十道面试题打卡
第十八天,感觉快要把对应的知识搞定了,但是今天不知道为什么输入法出了问题,以前都是用电脑自带的输入法,没出现过问题,今天不知道怎么回事,打拼音的时候,汉字总是出不来,重启也没用,只好换了其他软件的输入法,如果你们有什么好的办法解决原输入法打汉字出不来的问题,帮我一下吧,实在是头疼。
2022-03-15 20:24:19
402
原创 高频面试题_合并K个升序链表
今天把面试题背了一部分后,开始做笔试题,这是今天做的两道题,虽然第二道是困难题,但弄清楚第一道题目后,第二道题就好做很多了1.要合并两个有序链表,需要把两个链表对应节点的值进行比较,首先进行特判,如果第一个节点为空,则可以直接返回第二个节点,反之亦然;2.想清楚两个节点什么时候不比较值的大小,当其中一个节点为空时,就不用比较了,因此可以用while来写它们循环比较的代码,循环终止条件是两个节点中有一个为空就终止。3.将剩余的链表节点拼接到新链表节点的下一个节点,如果第一个链表不为空,则当前节点的下一个
2022-02-26 20:04:30
328
原创 【C++实习生】每天十道面试题打卡
第一天1.C++和C的特点与区别?2.C++的多态是如何实现的?3.C++如何实现内存管理?4.C++11中有哪些新特性?5.C++11中有哪些新特性?6.可变参数模板的作用7.malloc的原理以及brk系统调用和mmap系统调用的作用分别是什么?8.智能指针有哪几种?9.如何解决智能指针循环依赖的问题?10.STL中Vector,List和Map的底层原理,以及如何实现?
2022-02-26 15:19:20
298
原创 高频面试题_前缀和+哈希表
今天一共解决了两道题目1.和可被K整除的子数组2.和为K的子数组第一题:class Solution {public: int subarraysDivByK(vector<int>& nums, int k) { unordered_map<int, int> map = {{0, 1}}; int preSum = 0; int cnt = 0; for(int i = 0
2022-02-24 21:57:24
307
1
原创 高频面试题_字符串相加
这种题目也称为大数相加,思路比较简单,但没那么好写出来定义两个指针,分别指向第一个字符串和第二个字符串的某位,也就是最低位定义进位并将其初始化为零两个数字相加的终止条件就是第一个数的当前位和第二个数的当前位都为0并且进位也为零,按照这样的思路我们可以这样来写class Solution {public: string addStrings(string num1, string num2) { string res = ""; int i = num1.le
2022-02-22 17:10:38
191
原创 两数之和以及扩展
两数之和class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int, int> map; int size = nums.size(); for(int i=0; i<size; i++) { auto iter = map.find(target
2022-01-24 22:24:53
336
1
原创 请问构造函数中的能不能调用虚方法?
最好不要在构造函数中调用虚方法,从语法上讲,调用完全没有问题;但是从效果上看,往往不能达到目的。派生类对象构造期间进入基类的构造函数时,对象类型变成了基类类型,而不是派生类类型。同样,进入基类析构函数时,对象也是基类类型。所以,虚函数始终是仅仅调用基类的虚函数(如果是基类调用虚函数),不能达到多态的效果,所以放在构造函数中是没有意义的,而且往往不能达到本来想要的效果。...
2022-01-20 21:31:36
1132
原创 简述C++有哪几种传值方式,它们之间的区别是什么?
C++中的传值方式一共有三种:分别是值传递、引用传递和指针传递1.值传递:形参即使在函数体内发生改变,也不会影响实参的值2.引用传递:形参在函数体内的值发生改变3.指针传递:在指针指向没有发生改变的前提下,形参在函数体内值发生变化的时候,会影响实参的值1.值传递用于对象时,整个对象会拷贝一个副本,效率很低;2.引用传递用于对象时,不会发生拷贝行为,只绑定对象更安全、更高效;3.指针传递与引用传递一样,但没有引用传递安全...
2022-01-19 21:36:05
1830
原创 高频笔试题_栈和队列
有效的括号字符串今天时间不是很够,只写出来这一题,讲一下这个题目的思路吧1.先遍历字符串,如果遍历到左括号或者通配符星号,则将它们压入vec1.1同时,如果遍历到星号,让star++(代表通配符个数)2.第二种情况就是遍历到右括号的时候,如果vec空了,则代表没有与右括号匹配的字符了,就return false2.1先抵消右括号,当遍历到右括号时,定义一个bool类型的变量,判断遍历完整个vec之后,是否有左括号出现,如果没出现过,则证明vec里面全部是通配符星号,用星号抵掉一个右括号,否则用左括
2022-01-18 21:19:56
194
原创 笔试高频题_栈和队列
这次有三道题,不过都是难度为简单的题目用队列实现栈class MyStack {public: queue<int> que; MyStack() { } void push(int x) { que.push(x); } int pop() { int size = que.size(); size--;//因为要返回栈顶元素,所以先减一个,这样留下来的最后一个队列元
2022-01-17 20:48:43
360
原创 高频笔试题_反转链表Ⅱ
高频笔试题_反转链表Ⅱ这一题做起来和反转链表的思路差不多,都是把一个区间的链表来反转class Solution {public: ListNode* reverseBetween(ListNode* head, int left, int right) { ListNode* dummy = new ListNode(0); dummy->next = head; ListNode* pre = dummy; //先将
2022-01-14 21:01:22
260
原创 高频笔试题_相交链表
面试常考题相交链表题目已经保证链表中不存在环的问题,那就很好写了。先让两个链表的指针的位置相对一样,然后同时向右移动,直到两指针相等,详细注释已经放在代码里了,相信对大家有所帮助class Solution {public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { ListNode* curA = headA; ListNode* curB = head
2022-01-14 19:31:42
191
原创 高频笔试题_排序链表
排序链表我的做法分为以下几步:1.特殊判定2.链表分成两部分3.排序后再来合并链表class Solution {public: ListNode* sortList(ListNode* head) { // 特殊判定 if(head == nullptr || head->next == nullptr) { return head; } //使用归并排序和快慢指针来将链表分为两段
2022-01-13 21:17:08
238
原创 说说野指针的概念、产生原因以及如何避免?
概念:野指针也就是指向位置不可知的指针产生原因:释放内存后,指针没有及时置空,仍然指向该内存char *p = (char *)malloc(sizeof(char)*100); strcpy(p, "Douya"); free(p);// p所指向的内存被释放,但是p所指的地址仍然不变 ... if (p != NULL){// 没有起到防错作用 strcpy(p, "hello, Douya!");// error} 如何避免野指针的产生?1.指针初始化的时候置
2022-01-12 19:49:12
481
原创 说说static关键字的作用
1.定义全局静态变量和局部静态变量:在变量前面加上static关键字。初始化的静态变量会在.data段分配内存,未初始化的静态变量会在.bss段分配内存。直到程序结束,静态变量始终会维持前值。只不过全局静态变量和局部静态变量的作用域不一样;2.定义静态函数:在函数返回类型前加上static关键字,函数即被定义为静态函数。静态函数只能在本源文件中使用;3.在变量类型前加上static关键字,变量即被定义为静态变量。静态变量只能在本源文件中使用;//示例static int a;static void
2022-01-11 21:13:58
6392
原创 高频笔试题_反转链表
反转链表这道题是面试笔试里常出现的题目,想出来挺容易的,但不太好写这里我贴出代码class Solution {public: ListNode* reverseList(ListNode* head) { ListNode* temp; ListNode* pre = nullptr; ListNode* cur = head; while(cur) { temp = cur->next;// 存
2022-01-11 20:46:20
489
数据如何在各层之间传输【数据的封装过程】?
2021-11-23
怎样才能在大四秋招时offer多多?
2021-11-19
TA创建的收藏夹 TA关注的收藏夹
TA关注的人