与招聘经理的筛选回合(约 1 小时):
- 询问我目前的工作细节。
- 基于输出的问题:
C
int main(){ int i=5; int j=6; int k=(i+j)++; //what will be value of i,j and k ? }
C
Void f1 (int x, int y ) { x = y; } void f2 (int *x, int *y ) { *x = *y; } void f3 (int *x, int *y ) { x = y; } void f4 (int *x, int *y ) { int z = 20; *x = &z ; } void main (void ) { Int a = 5 ; Int b = 10 ; f1(a,b); //print a, b a= 5, b =10 ; f2(&a,&b); //print a, b a= 5, b =10 ; f3(&a,&b); //print a, b a= 5, b =10 ; f4(&a,&b); //print a, b }
C
Void function (int* a) { If (a == NULL) { a = new int(4);} } Int main() { Int *a = NULL; Function(a); Printf(“%d”,*a); -> what it will print? }
- 动态铸造如何工作?
- 为 AND 和 OR 门写真值表。使用算术运算运算符(+、-、*、/),推导出 AND 和 OR 门的功能
Sol:使用乘法的与门,使用+、*、-的或门
- 给定一个 4 位数字。使用相同的数字找到下一个更接近的数字。
我告诉了寻找下一个更大数字的方法。 https://www.geeksforgeeks.org/find-next-greater-number-set-digits/
他要求找到下一个比原始数字更大或更小的更接近的数字。我告诉方法找到更大的和以前的数字,并以最小的差异取数字。
然后他让我在一次遍历中完成。我告诉比较 adj。数字从右边开始,当数字不匹配时,交换它们,但它失败了以下 tc:9891->9819,但 9918 更接近 9891
我告诉从右侧对所有相邻对执行交换,按升序和降序对剩余数字进行排序,并跟踪更接近原始数字的数字。
我会感谢读者提出正确的方法来解决这个问题。
- 10 个硬币放在桌子上。 4表示尾部,6表示头部。
现在掷 7 个硬币。翻转后,9个硬币状态已知,4个反面,5个正面,找到第10个硬币的状态。
我给出了数学证明,最后一枚硬币是尾巴。
然后他要求做它而不做等式。而抛 7 个硬币的意思是,1 个硬币也可以抛 7 次。
由于翻转是奇数次和 4 个尾巴,所以在翻转前后出现 5 个头,当然,至少 1 个硬币已经改变了它的状态 => 1 个头已经变成了 1 个尾
技术回合(1 小时 30 分钟):
- 询问我当前的项目以及与此相关的一些交叉问题
- 问为什么需要BST。检查 BST 创建逻辑。
编写一个函数,如果右节点的总和与左节点的总和之间的差等于 parent_node,则该函数将在 BST 中打印一个节点。
问这个程序会不会崩溃?这之外的因素会导致崩溃吗?
如果这个树非常大或者无限递归,会导致栈溢出并会导致崩溃。
还询问了内存损坏。
- 询问是否有任务分配给我,我不清楚。我将如何完成该任务?
- 你在平面上有 n 个点,你必须用最少的电线连接所有这些点,这样当电流施加在任何节点上时,它会到达所有节点。如果 a,b 和 b,c 连接。我们可以假设 a,c 也是连通的。
用最小生成树方法解决。
- 基于输出的问题:
C
Void f1 (int x, int y ) { x = y; } void f2 (int *x, int *y ) { *x = *y; } void f3 (int *x, int *y ) { x = y; } void f4 (int *x, int *y ) { int z = 20; *x = &z ; } void main (void ) { Int a = 5 ; Int b = 10 ; f1(a,b); //print a, b a= 5, b =10 ; f2(&a,&b); //print a, b a= 5, b =10 ; f3(&a,&b); //print a, b a= 5, b =10 ; f4(&a,&b); //print a, b }
- 问我为什么要转?
- 平面上两点可以画多少个圆?无限多和3分?只有一个,但如果点位于同一条线上,则无法绘制圆。
技术回合(1小时):
- 设计 API 以将缓冲区的内容从一个位置移动到另一个位置,进行了大量讨论以使程序在所有情况下都能正常工作,例如函数参数、使用 unsigned int。
- https://www.geeksforgeeks.org/print-all-combinations-of-balanced-parentheses/
- https://www.geeksforgeeks.org/median-of-two-sorted-arrays-of-different-sizes/
告诉 O(n+m) 方法
技术回合(2小时):
- 询问公司目前的项目。
- 你知道大端和小端吗?编写 prog 来检查机器的字节序。
https://www.geeksforgeeks.org/little-and-big-endian-mystery/
- 打印从开始到 150 的所有质数。 https://www.geeksforgeeks.org/sieve-of-eratosthenes/
- 编写单例类。我们可以继承吗?为此编写代码。
我们可以使 Singleton 类构造函数受保护以使其在派生类中可访问
- 基于输出的程序
C
Void function (int* a) { If (a == NULL) { a = new int(4);} } Int main() { Int *a = NULL; Function(a); Printf(“%d”,*a); -> what it will print? }
- arr-> 1 4 5 7 8 10 15. 使其成为高度平衡的树。
我们需要为此创建中间元素根。
- 编写一个不使用分号打印 -4 到 -10 的程序
- 程序在 42 层塔中每 5 层停止电梯。例如:5,10,,,,40,35,30, 5, 0, 5,
- 查找 bst 中作为叶节点的父节点的节点数。此外,查找节点的所有父节点的计数
- 编写您自己的列表类迭代器。
- 使用递归打印二叉树的左视图。
- 模板专业化。 https://www.geeksforgeeks.org/template-specialization-c/
- 81 枚硬币,其中 1 枚较轻/较重,使用最小称重找出奇数一枚。
- https://www.geeksforgeeks.org/given-an-array-a-and-a-number-x-check-for-pair-in-a-with-sum-as-x/
- 差异黑白功能。重载和覆盖。编译器/链接器如何知道在 func 中调用哪个 func。超载情况。
名称重整概念
- 设计一个图书馆系统(不使用数据库)(将有书名和作者姓名)
a.在系统中增加一本书的条目
b.删除系统中的书籍条目
c.获取以“Abc”开头的书籍列表。如果 System 有像“Abcd”、“Abc of C code”、“Let us C”、“ABC of c++”这样的书——它应该显示
1.“ABCD”
2.“C代码的ABC”
3.《C++的基础知识》d. 获取特定作者的所有书籍
- 讨论特里树和链表方法