目录
本人背景:
末流211大三菜鸡,EE出身,一年前才开始准备转CS,之前一直在搞硬件,比科班出身的落后不少
好在学校里CS氛围浓厚,很多非CS专业的学长学姐毕业都进了大厂
牛客上很多两个月转行拿BAT的offer的帖子,给人一种大厂很好进的感觉,其实这条路的坎坷只有自己知道
准备:
1月有学长在群里发华为日常实习的消息,我定了一月底的票准备去实习
后来疫情,现在四月底了还在家gg
华为离我学校很近,所以是我的首选目标
计算机网络:https://xduwq.blog.csdn.net/article/details/104531278
操作系统:没有系统学习,牛客上有很多面经,速成的,导致后来面试好多OS问题我都翻车了
算法和数据结构:LeetCode必刷,面试好多题都是原题https://xduwq.blog.csdn.net/article/details/105469815
数据库:《MySQL必知必会》+牛客面经
投递简历的教训:
- 尽量找内推,找靠谱的校友内推。否则就算学历好也可能被刷!牛客上认识一个北大本硕的老哥,没有内推简历都挂了好多……所以尽量内推!内推会稳很多!
- 简历上的东西要hold得住!我简历项目最后写了一个数模项目,图论相关,大一的时候做的,早忘光了……有次面试被疯狂怼图论,怼到心态爆炸然后凉凉
- 简历上要写一些相关的项目,比如投后端写一些前端硬件的项目,面试官听的时候不耐烦尴尬
- 早投不要晚投!腾讯提前批引力计划,100个HC,我三月底投的,一打听只剩几个HC了,自然凉,还被锁简历当备胎……
腾讯微保
可能我投的岗位HC很少,笔试全AC现在还没消息……
附笔试题:
1. 最长不重复子串
class Solution {
public int lengthOfLongestSubstring(String s) {
int res = 0;
Set<Character> set = new HashSet<>();
for(int l = 0, r = 0; r < s.length(); r++) {
char c = s.charAt(r);
while(set.contains(c)) {
set.remove(s.charAt(l++));
}
set.add(c);
res = Math.max(res, r - l + 1);
}
return res;
}
}
2. 约瑟夫环
class Solution {
public int lastRemaining(int n, int m) {
int ans = 0;
// 最后一轮剩下2个人,所以从2开始反推
for (int i = 2; i <= n; i++) {
ans = (ans + m) % i;
}
return ans;
}
}
3. 填空题一道二分查找
招商银行IT开发
笔试不简单,大概AC一半不到
面试的时候问读研还是工作,我竟然傻傻地说没想好看情况,然后挂
所以一定要坚定地说工作!
附面试题:
- 做自我介绍,大概说了一下,然后介绍项目;十分钟打断
- C++怎样调用JS代码(扯了几种方式,被打断可以了
- CPU调度的几种方式(我说没学过OS,SOC里中断算不算,面试官说你说说看;然后我开始扯淡,天马行空讲,讲了五分钟还没讲到一半,被打断)
- 数据库索引的作用,有几种索引
- 二叉搜索树会不会(我说从树开始说吧),不用(那我从二叉树开始说吧),你从简要点说(一阵瞎比比……说到怎么查找复杂度,和其他几种查找方式比较的时候,又被打断……)
- 说说DFS和BFS(然后我以刚才树为例,开始发散瞎比比,几分钟后又被打断……)
- 代码怎么写(这样看具体问题吧),面试官终于笑了(又拿树为例,说了几种遍历),准备再说说图中的DFS BFS,又被打断……
- 什么语言更熟,进来换语言行不行……如果换算法行不行?
- 到底想保研还是工作(说没想好看情况,被打断……)
华为软开
笔试
笔试满分600,做了520
1. 大数幂
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true){
int n = sc.nextInt();
int l = sc.nextInt();
if(n == 0 && l == 0) break;
long res = 0;
for (int i = 1; i <= l; i++) {
res += quickMi(n, i);
}
System.out.println(res % 1000000007);
}
sc.close();
}
private static long quickMi(long aa, long bb){
long res = 1;
long a = aa, b = bb;
a %= 1000000007;
for (; b != 0; b /=2) {
if(b % 2 == 1){
res = (res * a) % 1000000007;
}
a = (a * a) % 1000000007;
}
return res;
}
2. 二进制贪心
#include <iostream>
#include <string>
using namespace std;
typedef long long int ll;
int main(){
int T;
ll n;
string s;
cin>>T;
for(int i=0;i<T;i++){
cin>>n>>s;
for(int j=0;j<n-2;j++){
if(s[j]=='0'&&s[j+1]=='0'){
s[j] = '1';
}else if(s[j]=='0'&&s[j+1]=='1'&&s[j+2]=='0'){
s[j]='1';
s[j+1]='0';
s[j+2]='1';
}
}
if(s[n-2]=='0'&&s[n-1]=='0'){
s[n-2]='1';
}
cout<<s<<endl;
}
return 0;
}
3. 回溯DFS数独
#include <iostream>
#include <string>
using namespace std;
bool sign = false;
int num[10][10];
bool Check(int n, int key);
int DFS(int n);
bool Check(int n, int key)
{
for (int i = 0; i < 9; i++){
int j = n / 9;
if (num[j][i] == key) return false;
}
for (int i = 0; i < 9; i++){
int j = n % 9;
if (num[i][j] == key) return false;
}
int x = n / 9 / 3 * 3;
int y = n % 9 / 3 * 3;
for (int i = x; i < x + 3; i++){
for (int j = y; j < y + 3; j++)
{
if (num[i][j] == key) return false;
}
}
return true;
}
int DFS(int n){
if (n > 80){
sign = true;
return 0;
}
if (num[n/9][n%9] != 0){
DFS(n+1);
}else{
for (int i = 1; i <= 9; i++){
if (Check(n, i) == true){
num[n/9][n%9] = i;
DFS(n+1);
if (sign == true) return 0;
num[n/9][n%9] = 0;
}
}
}
}
int main(){
string s;
for(int i=0;i<9;i++){
cin>>s;
int j = 0;
for(int k=0;k<s.size();k++){
if(s[k]<='9'&&s[k]>='0'){
num[i][j++] = s[k]-'0';
}
}
}
DFS(0);
for(int i=0;i<9;i++){
cout<<'{';
for(int j=0;j<8;j++){
cout<<num[i][j]<<',';
}
cout<<num[i][8];
cout<<'}'<<endl;
}
cout<<'{';
for(int j=0;j<8;j++){
cout<<num[8][j]<<',';
}
cout<<num[8][8];
cout<<'}';
return 0;
}
技术面试
面试官是学姐……挺温柔的
1. 没做自我介绍,学姐开始看我简历,然后一个个项目开始问
2. 代码复用问题(C函数化,C++面向对象说了一通)面向对象的性质
3. 代码量?
4. 你觉得项目负责人需要做些什么
5. TCP和UDP,可靠性
6. 调试中遇到的问题,复盘一个项目调试的全过程
7. 然后开心的聊天,聊人生
8. 代码题
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int,int> m;//key是值,value是下标
vector<int> ans;
for(int i=0;i<nums.size();i++){
if(m.count(target-nums[i])>0){
ans.push_back(m[target-nums[i]]);
ans.push_back(i);
break;
}
m[nums[i]] = i;
}
return ans;
}
};
可能因为我是本科菜鸟,问的都很简单哈哈
主管面试
1. 复盘笔试
2. 大学的经历?(面试官是亲学长,时不时来一句我当时读书的时候还没有这个……)
3. 最受挫折的事情?
4. 对华为公司了解多少?
5. 最喜欢什么语言?你觉得你在班上能力能排多少?对什么技术最感兴趣?保研还是工作?(夺命连环问)
6. 压力大的时候会干啥?
7. 聊人生……
8. 反问环节
阿里C++开发
等后面的面试,笔试做的也很差15%,虽然爆零也可以进面试,但是还是尽量考高一些!
附面试题
- 昨晚考的咋样?(只有30%AC,菜的一批,佛),你先自我介绍一下
- 成绩不错,问我有没有上研打算?
- 开始说项目,一个个复盘
- 你这项目里用到OpenCV,具体哪些?
- TCP和UDP区别
- 数据库隔离级别
- 数据库使用过程中遇到了什么困难(老实说当时数据就几百个没遇到特别的困难)
- SQLite和MySQL的区别
- C++智能指针
- new与malloc的区别(说了四五点,小哥笑着说够辣够辣下一个)
- 虚函数(说的结结巴巴的也没怪我gg)
- Linux用过吗?用了些啥
- 怎样杀死一个进程?(先ps再kill)
- C++编译的过程
- 动态编译和静态编译
- 多线程会出现什么问题(我说了进程通信巴拉巴拉)
- 我说的是线程,你用的时候有什么问题?(我说了Qt的signal……),其他也没用过吗
- 还有呢?(说了进程通信和线程通信,老实交代Qt的信号机制没用OS那一套)
- 原子操作(回答的不满意)
- 如果有一百个进程去访问一块资源变量,同时进行++操作,会出现什么结果(说了锁机制)
- 如果三个进程同时访问一个资源变量,会出现什么情况?(说了一通,没回答到点上,小哥说原子操作用的这呀!我赶紧说对对对……gg)
- 你搞了这么多机器学习,为啥不接着上研做ML(老实说在当时做嵌入式视觉这块,DL落地很难很难)
- 反问:你们部门做的是啥呀(数据库)
- 反问:你们这个数据库是基于MySQL的还是从头开始写的?
- 反问:为啥淘宝比支付宝慢很多,和数据库有关吗?(不作死就不会死……)
- 为啥第二次打开页面会比第一次快?
- 浏览器输入一个URL会经历一些什么步骤?
- 反问:你觉得我有哪些需要改进呢(C++基础扎实,数据库相关项目经验不足)
- 你的博客网址是啥我看看……
结语
其实还有一些面试笔试(快手奇安信美团等),不怎么想去也没做笔记,基本忘光了
由于暑假还有小学期,打算选就近的华为去实习,后面的一些面试和笔试就都拒掉了
保研的事情也基本搞定了,拿了bupt AI的offer,算是从EE硬件的坑里跳出来了
感觉自己和其他科班CS的差距还是特别大的,一个学校里人与人之间的差距比人与狗还大,学海无涯,继续加油鸭!!!