2012.9.26的笔试面试(XX的一天)
2012-09-27 10:23
197 查看
9.25小米笔试
1.
usigned int a=11;
int b=-2;
int c=0;
while(a+b>0)
{
a=a+b;
c++;
}
求返回的C的值
答:陷入到无限循环中,while循环不终止,无法输出c的值,因为a为unsigned类型,其值始终为正。
2.括号的问题:{{[()]}},正确的匹配,问{],(]等错误的匹配,问函数test(string s)判断字符串是否有误
3.写函数给字符串添加正确数量的括号来修正错误,问添括号的方法
4.另外两道编程大题。(一道矩阵染色的问题;一道浮点型数据求区域乘积最大的问题)
9.26趋势科技面试
1.是否有过多线程编程
2.SOCKET流程
3.如果要在socket中选取特定的ip该怎么做
4.介绍进程通信IPC,及方法
5.互斥锁
6.TCP与UDP的区别
9.26金山面试
1.泛型编程
2.智能指针
3.左连接和右连接的区别
4.实现一个简单的聊天程序该怎么做
9.26百度研发二面
1.重载new运算符
2.两个字符串a和b,字符串c,判断c是不是由a和b按照各自的顺序构造出来的
自己想到的方法是遍历c字符串,同时遍历字符串a和b进行判断,根据下标位置判断是否满足要求,但是有一些特殊情况没有考虑到,如a为abc,b为aef,c为aefabc,此时遍历a和b时,下标经过了各自的开头a时,不能再回去,想用标志位来记录有过改变的情况,情况很复杂没成功。在网上查些资料,是POJ2192,典型的方法是动态规划。
3.给定数组n个数,求n-1个数乘积的最大值
4.给定数组n个数,求是否有一定范围内数的和为0
首先想到的算法是依次遍历数组中的每个数,求数组的序列和,若为0则返回,算法时间复杂度为O(n^2)。
应该是有复杂度更低的方法,自己没想出来,在网上查资料找到了一种解法。
“如果某个sum值出现两次或两次以上,则说明它们之间部分的和为0”。
如:输入整数序列: 2 -3 3 1 0
计算sum[i]的值: 2 -1 2 3 3
其中2和3都出现了两次,说明有两个区间的和值为0,问题转化为求sum数组中是否有相同的数。故算法如下:
①开辟数组sum,保存计算出的sum[i]的值。 O(n)
②判断sum中是否有相同值,首先遍历一遍寻找数组中的最大最小值,建立差值范围大小的哈希表初始化置零。 O(n)
③再次遍历sum数组,对应哈希表中的值,若出现则置一,从而判断是否有重复值。 O(n)
所以这种算法总的时间复杂度为O(n),只是需要一定的空间消耗,为数组sum,O(n)和哈希表O(N),N为范围值。
9.26百度测试面试
1.C++的类模板,编写一个类模板可以装载各种容器
2.有大量数据的表,优化表的查询(拆表;加索引等)
3.红黑树的概念,解决的问题和哈希表的区别
4.搜索引擎中中文分词的方法(在有字典的情况下)
5.电视机性能测试
1.
usigned int a=11;
int b=-2;
int c=0;
while(a+b>0)
{
a=a+b;
c++;
}
求返回的C的值
答:陷入到无限循环中,while循环不终止,无法输出c的值,因为a为unsigned类型,其值始终为正。
2.括号的问题:{{[()]}},正确的匹配,问{],(]等错误的匹配,问函数test(string s)判断字符串是否有误
3.写函数给字符串添加正确数量的括号来修正错误,问添括号的方法
4.另外两道编程大题。(一道矩阵染色的问题;一道浮点型数据求区域乘积最大的问题)
9.26趋势科技面试
1.是否有过多线程编程
2.SOCKET流程
3.如果要在socket中选取特定的ip该怎么做
4.介绍进程通信IPC,及方法
5.互斥锁
6.TCP与UDP的区别
9.26金山面试
1.泛型编程
2.智能指针
3.左连接和右连接的区别
4.实现一个简单的聊天程序该怎么做
9.26百度研发二面
1.重载new运算符
2.两个字符串a和b,字符串c,判断c是不是由a和b按照各自的顺序构造出来的
自己想到的方法是遍历c字符串,同时遍历字符串a和b进行判断,根据下标位置判断是否满足要求,但是有一些特殊情况没有考虑到,如a为abc,b为aef,c为aefabc,此时遍历a和b时,下标经过了各自的开头a时,不能再回去,想用标志位来记录有过改变的情况,情况很复杂没成功。在网上查些资料,是POJ2192,典型的方法是动态规划。
// abc def --> adbcef √ // abc aef --> aefabc √ #include <iostream> #include <string> using namespace std; int dp[100][100]; int main() { string str1, str2, str3; cout<<"Please input three strings: "<<endl; cin>>str1>>str2>>str3; int len1=str1.size(), len2=str2.size(), i, j; // init for(i=1;i<len1+1;i++) { if(str3[i-1]==str1[i-1]) dp[i][0]=1; else break; } for(j=1;j<len2+1;j++) { if(str3[j-1]==str2[j-1]) dp[0][j]=1; else break; } // dp for(i=1;i<len1+1;i++) { for(j=1;j<len2+1;j++) dp[i][j]=(dp[i][j-1] && str3[i+j-1]==str2[j-1])||(dp[i-1][j] && str3[i+j-1]==str1[i-1]); } //if(dp[i][j]) i and j are already out of range if(dp[len1][len2]) cout<<"YES"<<endl; else cout<<"NO"<<endl; return 0; }其中的dp[i][j]表示利用str1的前i个字符和str2的前j个字符能否顺序组成str3的前i+j个字符,若成功则置1,否则置0。状态转移方程为:dp[i][j]=(dp[i][j-1] && str3[i+j-1]==str2[j-1])||(dp[i-1][j] && str3[i+j-1]==str1[i-1])。还需要注意的就是初始化,动态规划就是需要从初始的情况逐步递推出最后的结果。还有一些操作C++的string类型对象问题,如string类型的长度size()函数,见:C++中string类型的总结,最后需要注意的就是字符数组的边界值。
3.给定数组n个数,求n-1个数乘积的最大值
4.给定数组n个数,求是否有一定范围内数的和为0
首先想到的算法是依次遍历数组中的每个数,求数组的序列和,若为0则返回,算法时间复杂度为O(n^2)。
应该是有复杂度更低的方法,自己没想出来,在网上查资料找到了一种解法。
“如果某个sum值出现两次或两次以上,则说明它们之间部分的和为0”。
如:输入整数序列: 2 -3 3 1 0
计算sum[i]的值: 2 -1 2 3 3
其中2和3都出现了两次,说明有两个区间的和值为0,问题转化为求sum数组中是否有相同的数。故算法如下:
①开辟数组sum,保存计算出的sum[i]的值。 O(n)
②判断sum中是否有相同值,首先遍历一遍寻找数组中的最大最小值,建立差值范围大小的哈希表初始化置零。 O(n)
③再次遍历sum数组,对应哈希表中的值,若出现则置一,从而判断是否有重复值。 O(n)
所以这种算法总的时间复杂度为O(n),只是需要一定的空间消耗,为数组sum,O(n)和哈希表O(N),N为范围值。
9.26百度测试面试
1.C++的类模板,编写一个类模板可以装载各种容器
2.有大量数据的表,优化表的查询(拆表;加索引等)
3.红黑树的概念,解决的问题和哈希表的区别
4.搜索引擎中中文分词的方法(在有字典的情况下)
5.电视机性能测试
相关文章推荐
- C/C++ 笔试、面试题目大汇总2
- 推荐一款简历神器,找工作再也不愁了 大家每次换工作或者找工作的时候,都需要一个好的简历。简历的重要性就不言而喻了,简历是找工作的一块敲门砖,就像「未见其人,先闻其声」一样,在找你笔试或者面试之前
- 程序员求职之道(《程序员面试笔试宝典》)之企业面试笔试攻略(互联网)?
- 【笔试面试】大数相乘
- Android 面试笔试集锦 --- 基本知识点 整理版
- 最新九月百度人搜,阿里巴巴,腾讯华为京东小米笔试面试二十题
- 笔试面试算法
- 2011各大IT公司笔试面试题目
- 精心收集的面试笔试题库,网络上很难找到这么齐全的,推荐给大家
- 二叉树相关笔试面试问题集锦
- 计算机专业校招笔试面试基础知识总结
- C/C++ 笔试、面试题目大汇总(一)
- 详解面试笔试题(16)--内存对齐
- java笔试+面试总结——mysql
- C/C++求职宝典21个重点笔记(常考笔试面试点)
- C++常见面试笔试集锦
- 今天笔试面试了!
- 关于面试和笔试
- 武汉群硕笔试和面试的6个瑕疵和5个亮点
- java面试笔试题大汇总 ~很全面