# 原味笔面经
你的每一次求职经历都值得被记录。在这里分享原汁原味的名企笔试、面试经验。
···
807人正在讨论
#
吴思涵
北京理工大学珠海学院·2022届

字节跳动-抖音社招面经(Offer已拿)

背景 2017年本科毕业(非985),从19年11月开始准备找工作。首先一般面试分为三个部分:项目、技术知识、算法。 项目是因人而异的,每个人的项目不一样,后面技术知识的提问和这里是有关联的。 技术知识:在我进行准备时也整理过很多,这里给推荐下自己整理的内容:Interview。 算法题:主要在 LeetCode 上刷题,整个过程刷了 200+ 题(题目不是做一遍就完事,可以多做几次),这里推荐两个题目合集:精选 TOP 面试题、 热题TOP100 上面这些准备的差不多之后,就可以再找目标公司的面经,再集中补下,下面就说下技术知识的面试题目。 【面试题】 在进行技术知识的面试过程中,当面试官提到一个点,如果你有把握,可以多发散发散,把话题向你熟悉的点去引导。 MySQL 的索引? B+树的结构介绍下? B+树与B树有什么优势? 事务的四个特性? 事务的隔离级别? 讲讲MySQL 的事务隔离? RR解决了什么问题? MVCC & 锁MySQL 平滑水平扩容方案? Redis 线程模型?持久化方案? Redis Cluster?其他开源集群方案? Redis Cluster 是如何进行扩容的? Redis hash、zset 数据结构?跳表是怎么构建的? 并发修改数据库并回写Redis 如何保证数据一致性? Redis 加锁方案?Zookeeper 加锁方案?各有什么优缺点? JVM 垃圾回收机制?CMS 收集器? Netty 的优势在哪?有什么问题吗? HashMap 的结构?ConcurrentHashMap 读写加锁吗? ThreadLocal 的结构? 流量控制算法了解吗?介绍下 设计一个短链接生成系统?数据如何存储?高并发如何处理? 讲讲 ZK 的结构?如何进行选主的?从 CAP 分析下 算法:股票收益、str2int、树的最大路径 这些面试题在三次技术面试中,有重复的地方。很多也是自己进行发散提到的。每轮面试时间在1小时左右,头条面试过程还算很不错的。 最后:欢迎 Star Java 笔试、面试 知识整理
分享
7
原味笔面经
东游猴哥
厦门大学·2022届

顺丰AI产品经理offer到手的面经

在官网投的简历,说实话,内推除非是你认识的人,不然个人感觉回复的都很少。 第一轮网上笔试,还是一样的一些行测题,印象不是很深刻。 然后就直接收到了面试,远程面试,记忆最深刻的就是当天上午刚刚参加完腾讯的群面,纠结了半天要不要回来面顺丰,因为群面之后会紧接着下一轮面试(感觉表现不是很好,准备霸面的)。当时还是回来了,现在想想差点错过了顺丰。 面试很愉快,和我面试的人应该就是我未来的boss,大概30-40的素颜女上司,给我一种女程序员的感觉,没有要黑的意思(我自己也是个和代码打交道的人),她很专业。 首先是自我介绍,我大概把自己的简历大概总结一下,然后加了一些自己的个人评价。 然后问了我简历的经历,说了很多次,简历一定要真实。面试之前一定要知道自己简历的重点是什么,可能会问一些什么问题,提前稍微准备一下,至少在脑子里面思考一下。 因为我有两段实习的经历,这是重点。由于这是远程面试,当时我把相关的我能想到的问题,和答案要点都写在了简历的旁边,甚至包括一些细节的问题,比如这个项目的用户数量,PV,UV。(因为数据真的有点记不住) 第二个问题问的我有点发慌。因为是AI方向的,问了我目前的研究方向—基于深度学习的目标检测。我说在用caffe平台,SSD算法、Faster-RCNN算法。(给自己挖了一个坑)但是我也提前说明了,目前我都是在使用阶段,可能对算法还没有深入理解,但是即使我铺垫了仍然还是被问到了。然后问我对比一下两个算法的优缺点,还好知道皮毛,最后让我用一句话概括两种算法,我简单说了一下,还是补充了一句,目前还是用的阶段,了解不够深入。老师没走错了片场吧,我面的PM,不是算法啊(怕了怕了)。 第三个问题,问的是对目前AI在顺丰的业务上,能有什么实际的应用。呀这个刚好问到我了,因为我有想过这些问题,简单回答就是比如快递单的自动化、快递的分拣(涉及专业,我就不深入去说啦)。这个问题就是平时的积累了,没有别的途径,平时多思考,多了解,或者在面试这家公司之前多了解公司的业务。 最后问我有什么问题问她吗。因为刚刚被问懵逼了,所以我就顺势给自己挽尊。我就问了,如果要未来往这个方向发展,我现在需要准备什么,在专业方面应该是学的多深入,对我的专业要求有多高。 面试官真的非常nice啊,回答的很仔细,大概就是专业还是要学习,并且要了解最新的科技,可以不深入的了解算法,但是至少要给算法工程师提供一些方案,比如哪些算法更好,更快。除此之外,还给我分享了她的表哥在她的人生经历中对她的指导(因为我当时表达了对未来的迷茫)。 接下来就是HR面。就是今天给我打电话声音很好听的瘦瘦帅帅的小哥哥。 首先自我介绍。 然后问简历。问我哪一个项目影响最深刻,我选择的是我创业的那个项目,然后他重点就问了这个项目,比如从中学到了什么。因为我个人的原因,两个实习是同时进行的,所以问了当时是怎么兼顾过来了。因为我两个实习是有特殊原因的,这个大家还是不要有这种经历比较好,真的很累。 第二个问题,对我影响最大的一个人,我写了带我入PM门的朱老师。 第三个问题,你觉得顺丰是个怎么样的公司。当时因为我没有提前去了解顺丰,答得不是很好,只能说说自己印象中的顺丰。 第四个问题,评价一下,说一下自己的优缺点。优点可以各自发挥,但是缺点一定要在之前心里有点X数,什么该说什么不该说有所权衡。作为一个需要和人沟通的PM,就不要说自己脾气暴躁了,我说的是自己不善于拒绝他人。 最后还是问我有什么问题问他吗。 很顺利。 但是由于个人原因拒了,有些遗憾。
分享
1
原味笔面经
小妖哆哆
四川师范大学·2022届

爱奇艺2018春季校招笔试编程题参考代码

牛牛与玩偶 分析 根据题意,只会有两种重量的玩偶,对于每一种重量,维护该重量的玩偶总数和最后一个该重量玩偶的序号,最后找到数量为1的那种玩偶对应的序号就可以了。 时间复杂度 O(n) 参考代码 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include <bits/stdc++.h> using namespace std;   int w[1000005]; int main() {     int n;     int w1, w2, num1 = 0, num2 = 0, ans1, ans2;     scanf("%d", &n);     scanf("%d", &w[1]);     w1 = w[1];     num1 = 1;     ans1 = 1;     for(int i = 2; i <= n; i++) {         scanf("%d", &w[i]);         if(w[i] == w1) {             num1++;             ans1 = i;         } else {             w2 = w[i];             num2++;             ans2 = i;         }     }     if(num1 == 1)         printf("%d\n", ans1);     else         printf("%d\n", ans2);     return 0; } 彩色队伍 分析 挨着扫一遍, 统计当前字符跟前一个字符不同的个数。 时间复杂度 O(n) 参考代码 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include <bits/stdc++.h>   using namespace std;   string s; int main() {     cin >> s;     int cnt = 0;     for(int i = 1; i < s.size(); i++) {         if(s[i - 1] == s[i]) {             cnt++;             i++;         }     }     cout << cnt << endl;     return 0; } 牛牛学洗牌 分析 按照题目所说的,每一次把前Xi张牌和剩下的牌分开,再一张一张从两叠牌轮流放回去即可。 时间复杂度 O(n) 参考代码 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #include <bits/stdc++.h> using namespace std;   int a[15]; int temp[2][15]; int len[2];   int main() {     int n;     bool f;     for(int i = 1; i <= 13; i++) scanf("%d", &a[i]);     scanf("%d", &n);     while(n--) {         scanf("%d", &len[0]);         len[1] = 13 - len[0];         for(int i = 1; i <= len[0]; i++) temp[0][i] = a[i];         for(int i = 1; i <= len[1]; i++) temp[1][i] = a[i + len[0]];         f = 0;         for(int i = 13; i >= 1; i--) {             if(len[f] == 0) f=!f;             a[i] = temp[f][len[f]];             len[f]--;             f = !f;         }     }     for(int i = 1; i <= 13; i++) {         printf("%d", a[i]);         if(i == 13)             printf("\n");         else             printf(" ");     }     return 0; } 三个整数 分析 设X为最后三个数都变为的数。 所以总共需要的操作次数为(3X - (A + B + C)) / 2。注意到X肯定大于等于A, B, C三个数的最大值, 我们现在要最小化X, 并且两个操作都不改变A + B + C的奇偶性。 设A, B, C的最大值为Ma = max(A, max(B, C)) 所以3 Ma与 A + B + C相同奇偶性的话, X = Ma, 否则X = Ma + 1。 然后输出(3Ma - (A + B + C)) / 2即可。 时间复杂度 O(1) 参考代码 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <bits/stdc++.h>   using namespace std;   int main() {     int a[3];     cin >> a[0] >> a[1] >> a[2];     sort(a, a + 3);     if ((a[2] - a[1] + a[2] - a[0]) % 2 == 0)         cout << (a[2] - a[1] + a[2] - a[0]) / 2;     else         cout << (a[2] - a[1] + a[2] - a[0] + 3) / 2;     return 0; } 字典序最大子序列 分析 贪心。每次取当前剩余字典序最大的字符。 时间复杂度 O(n) 参考代码 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include <bits/stdc++.h>   using namespace std;   string s; int main() {     cin >> s;     ostringstream ss;     while(!s.empty()) {         string::iterator it = max_element(s.begin(), s.end());         ss << *it;         s.erase(s.begin(), it + 1);     }     cout << ss.str() << endl;     return 0; } 牛牛配点心 分析 合法的点心盒一共有三种:一甜一苦一酸/两甜一苦(酸)/三甜。 为了最大化点心盒的数量,我们肯定是优先组成第一种点心盒,再考虑第二种点心盒,最后剩下的甜点心每三个组成一个点心盒。 于是问题转化为,最多能同时组成多少对一苦一酸的点心,并且每对点心都不冲突。 我们可以借助二分图匹配的模型,考虑在任意一对个不冲突且一苦一酸的点心之间连一条边,然后求最大匹配。 最后根据最大匹配的数量、多余的苦(酸)点心的数量、和甜点心的数量算出答案。 时间复杂度 O(n^3) 参考代码 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 #include <bits/stdc++.h> using namespace std;   char s[505][5]; bool ok[505][505]; int root[505]; vector <int> vec[505]; bool life[505];   bool solve(int x) {     life[x] = 1;     for(int i = 0; i < vec[x].size(); i++) {         if(life[vec[x][i]])             continue;         else             life[vec[x][i]] = 1;         if(!root[vec[x][i]] || solve(root[vec[x][i]])) {             root[vec[x][i]] = x;             return 1;         }     }     return 0; } int main() {     int n, m, u, v;     int numdl = 0, numdc = 0, numds = 0, ans = 0;     scanf("%d%d", &n, &m);     for(int i = 1; i <= n; i++) scanf("%s", s[i]);     for(int i = 1; i <= m; i++) {         scanf("%d%d", &u, &v);         ok[u][v] = 1;         ok[v][u] = 1;     }     for(int i = 1; i <= n; i++) {         if(s[i][0] == 'K') {             numdc++;             for(int j = 1; j <= n; j++) {                 if(s[j][0] == 'S' && !ok[i][j])                     vec[i].push_back(j);             }         } else {             if(s[i][0] == 'T') numdl++;             else numds++;           }     }     for(int i = 1; i <= n; i++) {         memset(life, 0, sizeof(life));         if(s[i][1] == 'C' && solve(i)) ans++;      }     if(ans >= numdl)         printf("%d\n", numdl);     else     {         if((numdl - ans) / 2 >= (numdc + numds - ans * 2))             printf("%d\n", numdc + numds - ans + (numdl - ans - (numdc + numds - ans * 2) * 2) / 3);         else             printf("%d\n", ans + (numdl - ans) / 2);     }     return 0; } 牛牛配糖果 分析 可以通过母函数求解或者直接用背包dp就好了。 参考代码 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include <bits/stdc++.h> using namespace std;   long long f[2][105];   int main() {     int n, m;     scanf("%d%d", &n, &m);     memset(f, 0, sizeof(f));     f[0][0] = 1;     for (int i = 1; i <= n; i++) {         memset(f[i & 1], 0, sizeof(f[i & 1]));         int l, r;         scanf("%d%d", &l, &r);         for (int k = l; k <= r; k++)             for (int j = m; j >= k; j--)                 f[i & 1][j] += f[i + 1 & 1][j - k];     }     printf("%lld\n", f[n & 1][m]);     return 0; }
分享
2
原味笔面经
绿皮D-219
江南大学·2022届

字节跳动教育部门Android社招一面二面经验

一面: 算法: 1、n! 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 public static int recursive(int n){           if(n<=1){               return 1;           }else{               return n*recursive(n-1);           }       } 2、实现 double base 的 int expand 次幂 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 public class Solution {    public double Power(double base, int exponent) {          double mul=1.0;          /* 如果exponent = 0 输出1 */             if(exponent == 0)             {                 return 1.00000;             }               /* 如果base = 0 输出0 */             if(base >= -0.000001 && base <= 0.000001)             {                 return 0;             }             /* 如果指数大于0 */             if(exponent > 0)             {                 for(int index = 0; index < exponent; index++)                 {                     mul *= base;                 }             }             else             {                 exponent = -exponent;                 for(int index = 0; index < exponent; index++)                 {                     mul *= base;                 }                 mul = 1.0/mul;             }                 return mul;       } } retrofit原理: 反观一下Retrofit,其内部的设计结构非常清晰, 通过动态代理来处理接口, 通过OkHttp来处理网络请求, 通过CallAdapterFactory来适配OkHttpCall, 通过ConverterFactory来处理数据格式的转换, 这符合面对对象设计思想的 \color{red}{单一职责原则} 单一职责原则,同时,Retrofit对CallAdpaterFactory和ConverterFactory的依赖都是依赖其接口的,这就让我们可以非常方便的扩展自己的CallAdpaterFactory和ConverterFactory,这符合 \color{red}{依赖倒置原则} 依赖倒置原则;不管Retrofit内部的实现如何复杂,比如动态代理的实现、针对注解的处理以及寻找合适的适配器等,Retrofit对开发者隐藏了这些实现细节,只提供了简单的Api给开发者调用,开发者只需要关注通过的Api即可实现网络请求,这种对外隐藏具体的实现细节的思想符合 \color{red}{迪米特原则} 迪米特原则。另外,Retrofit内部大量使用了设计模式,比如构造Retrofit对象时使用了 \color{red}{Builder模式} Builder模式,处理接口时是用来 \color{red}{动态代理模式} 动态代理模式,适配OkHttpCall时使用了 \color{red}{Adapter模式} Adapter模式,生成CallAdpater和Converter时使用了 \color{red}{工厂模式} 工厂模式。Retrofit的设计正是因为遵循了面向对象的思想,以及对设计模式的正确应用,才使得其具备结构清晰、易于扩展的特点。 怎样保证两个线程不死锁 执行顺序,避免循环等待,设置锁的超时时间 1、activity生命周期 a启动b,2、如果b是透明的 a的onpause——onstop——b的oncreate——onstart——onresume anr异常产生,分析 当主线程在 Sleep 的时候,如果 UI线程不需要进行操作,也就是说没有消息会发送给UI线程并要求UI线程进行处理的时候 Sleep 30秒就不会导致ANR,因为没有 出现 ANR(应用没有响应)的情况啊,没有人向线程请求什么东西,也就不需要响应了,既然没有响应了,那怎么会有ANR呢? Android N 的 ANR时间 Service 超时 复制代码 1 static final int SERVICE_TIMEOUT = 20*1000; // 前台 static final int SERVICE_BACKGROUND_TIMEOUT = SERVICE_TIMEOUT * 10; // 后台 复制代码 1 - Broadcast 超时 static final int BROADCAST_FG_TIMEOUT = 101000; // 前台 static final int BROADCAST_BG_TIMEOUT = 601000; // 后台 复制代码 1 - InputDispatching 超时 static final int KEY_DISPATCHING_TIMEOUT = 5*1000; 复制代码 1 - ContentProvider 超时 static final int CONTENT_PROVIDER_PUBLISH_TIMEOUT = 10*1000; 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 ####绘制卡顿分析,解决   自行补充   ####除了jni,链接java和c的通信方式 除了aidl 还有hidl   ####使用过的设计模式:单例,代理,工厂方法,建造者   ####单例也会产生内存泄露,为什么 ![image.png](https://uploadfiles.nowcoder.com/files/20200503/258100_1588473892555_648225-662426595c1a7015.png)   >不管外面传入什么Context,最终都会使用Applicaton的Context,而我们单例的生命周期和应用的一样长,这样就防止了内存泄漏。   ####okhttp的责任链模式有哪些 自行补充   ####git和svn的优缺点 >1.SVN优缺点 优点: 1、 管理方便,逻辑明确,符合一般人思维习惯。 2、 易于管理,集中式服务器更能保证安全性。 3、 代码一致性非常高。 4、 适合开发人数不多的项目开发。 缺点: 1、 服务器压力太大,数据库容量暴增。 2、 如果不能连接到服务器上,基本上不可以工作,看上面第二步,如果服务器不能连接上,就不能提交,还原,对比等等。 3、 不适合开源开发(开发人数非常非常多,但是Google app engine就是用svn的)。但是一般集中式管理的有非常明确的权限管理机制(例如分支访问限制),可以实现分层管理,从而很好的解决开发人数众多的问题。   >Git优缺点 优点: 1、适合分布式开发,强调个体。 2、公共服务器压力和数据量都不会太大。 3、速度快、灵活。 4、任意两个开发者之间可以很容易的解决冲突。 5、离线工作。 缺点: 1、学习周期相对而言比较长。 2、不符合常规思维。 3、代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。 tcp三次握手和四次挥手 自行补充 recycleview listview的优缺点 >recycler: 1、4级缓存 2、局部刷新 3、viewholder重用 4、动画 5、列表,瀑布流, 6、自己实现onclicklistener() listview: 1、二级缓存 2、自己实现viewholder 3、没有动画, 4、不能局部刷新 5、自定义瀑布流     怎么设计一个框架,跨平台和不跨平台的方案 业务层:具体的业务模块 组件层:网络,图片,ui,mvp,打印机,扫描,推送等,数据库等等组件 底盘层:apm,推送   SharedPreferences进程间为什么不安全 原因:只有在创建SharedPreferences对象的时候才会从磁盘中国进行读取,读取完以后值保存在内存(HashMap)当中,下次获取SharedPreferences对象优先从缓存当中获取,所以在当前进程修改了SharedPreferences的值,其他进程的SharedPreferences对象的值并不会改变。只有把当前另外的进程关闭(如:关闭手机、或杀死该app重新进入),再次创建进程时才会重新从磁盘中再次读取文件。 sp在创建的时候会把整个文件全部加载进内存,如果你的sp文件比较大,那么会带来几个严重问题: 第一次从sp中获取值的时候,有可能阻塞主线程,使界面卡顿、掉帧。 解析sp的时候会产生大量的临时对象,导致频繁GC,引起界面卡顿。 这些key和value会永远存在于内存之中,占用大量内存。 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 SharedPreferences 是线程安全的吗?它的 commit 和 apply 方法有什么区别 1.SharePreferences是线程安全的 里面的方法有大量的synchronized来保障。 2.SharePreferences不是进程安全的 即使你用了MODE_MULTI_PROCESS 。 3.第一次getSharePreference会读取磁盘文件,异步读取,写入到内存中,后续的getSharePreference都是从内存中拿了。 4.第一次读取完毕之前 所有的get/set请求都会被卡住 等待读取完毕后再执行,所以第一次读取会有ANR风险。 5.所有的get都是从内存中读取。 6.提交都是 写入到内存和磁盘中 。apply跟commit的区别在于 apply 是内存同步 然后磁盘异步写入任务放到一个单线程队列中 等待调用。方法无返回 即void commit 内存同步 只不过要等待磁盘写入结束才返回 直接返回写入成功状态 true or false 7.从 Android N 开始, 不再支持 MODE_WORLD_READABLE & MODE_WORLD_WRITEABLE. 一旦指定, 会抛异常 。也不要用MODE_MULTI_PROCESS 迟早被放弃。 8.每次commit/apply都会把全部数据一次性写入到磁盘,即没有增量写入的概念 。 所以单个文件千万不要太大 否则会严重影响性能。     准备好要问的问题 自行补充   greendao的优缺点 1、方便快速开发,提高效率 缺点:有些复杂sql语句不支持   事件分发机制,action_down,action_move,action_up的区别   1,ACTION_DOWN 事件决定着接下来的一系列事件的传递方向。返回TRUE ,则该一系列操作事件将由当前View的onToucheEvent 处理。返回false 事件将继续传递。直至返回Activity. Activity接收到其分发出去的ACTION_DOWN返回值false,则不再分发接下来的MOVE UP 事件。   2、dispatchTouchEvent 分两种情况:ACTION_DOWN 时return 和 ACTION_MOVE 、ACTION_UP return 。ACTION_DOWN:返回TRUE和该View 的onTouchEvent ACTION_DOWN返回true 是一样的即告诉activity 当前View可以处理接下来的事件流。 返回false 结束事件剩下的也不再传递。ACTION_MOVE 、ACTION_UP :这种情况说明其子View中已经开始处理事件流,在这里return直接导致该部分事件流不再继续传递,对于没有return的还按照正常的流程传递。   3、onInterceptTouchEvent 不论什么时候拦截,接下来的事件都将传递给当前的onTouchEvent处理接下来的事件流。例如在当前View的onInterceptTouchEvent 的ACTION_MOVE 中返回了true,则接下来的ACTION_MOVE、ACTION_UP都将传递给当前view的onTouchEvent处理。其子View将不再接收处理剩下的事件。 1.在所有的事件微观表现中,action_down是整个事件的基础,是任何宏观事件的起始事件,一旦action_down return false,表示事件继续向外层冒泡,当有某一层的action_down 中return true,表示此层消费了此action_down事件,那么在接下里的action_move、action_up等事件中,将直接先传入此层中,且不管action_move、 action_up等返回false还是true,事件都不会继续冒泡到外层。事件由此被消费掉。 2.由此可以得知,action_down在整个事件传递中的重要作用。如果某层发生了action_move或者action_up微观事件,那么一定发发生过action_down微观事件。 关于setOnTouchListener、setOnClickListener和setOnLongClickListener: Android中,有时候经常见到针对同一控件可能设置不同的事件(如setOnTouchListener、setOnClickListener和setOnLongClickListener),对于这些事件的执行顺序, setOnTouchListener是最先执行的。并且只有当此空间完整走完action_down和action_up流程后,才可能调用performClick()方法,及调用onclick执行。而onLongClick则是在action_down 之后开始,并且是在一个新的线程中去判断按压的时间,条件满足则调用performLongClick()函数,及调用onLongClick()函数。 ``` 二面: 1、怎样检测内存泄露,生产上怎么定位内存泄***r>2、怎样定位native层叠内存泄***r>3、bindservice和startservice的区别 4、怎样不让别人绑定我的service服务 5、音乐播放器怎样实现退出页面还可以播放 6、contentprovider插入一条数据要做那些操作 7、数据库事务和普通操作的区别,自己怎样实现事务 8、内存泄露有哪些,handler,单例,webview,具体场景,怎样解决 9、touch的事件传递 10、怎样在子线程启动handler 11、浮窗是怎么实现的,window是由什么管理的 12、什么时候复写 measure layout draw 13、measure方法是怎样将大小传递给系统的 14、自定义控件的时候,canvas的savecanvas和restorecanvas的作用 15、home按键的事件是怎么处理的 16、音量键是怎样传递的 17、aidl的oneway的作用
分享
2
原味笔面经
GentleGamer
重庆邮电大学·2022届

依图科技面经分享

今天我在一天内去面了两家公司,出乎意料的都当场拿到了offer,因为之前一个offer都还没有,今天应该算是十分具有意义的一天,所以回来打算新开一贴。之前的一系列面经转 约的上午9点半面百姓网,下午2点面依图科技,虽然百姓网现在没落了,但有机会去涨涨面试经验还是可以的,面试官也没让我失望,出了一些有意思的题,下面分享一下。 因为早班车堵车严重,我9点50才到,首先进行感觉这公司好多女员工。 一面面试官拿着我的笔试试卷和简历进来,依个问我做错的题。首先是最短路径算法你理解哪些?答:floyd, dijkstra, bellman-ford,spfa,分别适用什么场景?答:除了floyd是计算两两最短路,其它都计算单源最短路径。复杂度各是多少?答:一堆分析。然后让我把笔试中写的复杂度过高的一题再重新优化了一下。 两道概率题: 1. 一个人在沙漠中车抛锚了,已知每天有车经过的概率是60%,问他在前8个小时获救的概率是多少? 2. 扫雷游戏: 在一个局部的情形中,点开了1和2,X表示未知,问A,B,C,D中哪一点是雷的概率最大? X X X X X A 1 B 2 C X X D X X 两题我都没答对,承认我的概率论学的真心不好。后来面试官给我讲了解法,豁然开朗。 一道codeForces原题(我没做过):从N个数中可放回的抽取B次,问B次取出的数的和被X模余K的方法总数是多少,N<50000,B<10E9,K<X<100 这题我在5分钟内写出了递推式并给出了快速幂优化后的时间复杂度,面试官很满意。 二面面试官主要跟我聊简历上的几个项目,他好像不能理解词向量的形式,反复解释了很多遍,问的问题都比较简单,有TF-IDF,余弦相似度,分词工具等等。 面完已经12点多了,在全家随便买了个饭吃后直奔依图。到了感觉技术氛围很浓厚,工位是像网吧一样连成一排的,桌面上各种纸笔凌乱。被安排在咖啡厅面试,但因为面试官有事,直到下午2点半才开始,我都困得不行了,这里要感谢HR给我点了一杯冰拿铁提了提神。 一面面试官是个看起来就觉得很聪明的人,或者说长的很聪明的人,先问了问3个项目。因为我直说机器学习这块我正在恶补,他就说那就不问机器 学习,直接出算法。 第一题很简单: 有序数组 从中间某点隔开,右边的放到左边,然后问在这个数组中怎么进行二分查找。讲了思路后手写代码 第二题第一问也很简单: 一个矩阵上每一点都有分值,从左上角走到右下角,只能往下或者往右,问走一遍能够取到的最大分值,简单DP一下。第二问比较有难度,问走两遍能够取到的最大分值,大概花费了15分钟才解出来,面试官很满意。 二面面试官看起来也蛮聪明,上来啥都不说直接出算法题 第一题:有一个数组,让找到两个不重复的连续子序列A,B ,求Max(Sum(A)-Sum(B)。 3分钟解出,10分钟写完代码 第二题:有一个GOD()函数,能够以C的概率返回0,以1-C的概率返回1,C未知,让利用GOD()构造P(x )实现以X的概率返回0,1-X的概率返回1,不能使用随机函数 我说了两个解法,但都是错的,因为还是用了随机函数。最后面试官说了解法,感觉trick痕迹太明显了,正常根本想不出来啊。 三面主管面,首先让我讲一个我觉得最值得讲的项目,我选了股票舆情分类来讲,但应该是被鄙视了,面试官言外之意就是个二分类而已。然后还问了些为什么不尝试用深度模型之类。然后又出了道算法题: LeetCode原题: 有一个集合A包含了一些数,输入N,求元素个数最小的集合B,使得A并B后内的数组合相加能够组成1到N中的所有数 主要是这题表述有点模糊,理解清楚题意后就想起来解法,很快解了出来,然后写代码,但还是漏了一个细节造成一个BUG被面试官发现了 随后随便聊天,我问了一个问题,就是华为现在要用开发历史数据中挖掘信息来提高软件工程师效率,这个事能否做,面试官很鄙视的向我解释了这个事情做不了,说了一大堆,原因我其实也知道。。后来我说我们现在确实让华为提供数据和一个想做的细节点的LIST。 面完HR进来就说通过了面试问我何时能入职。
分享
17
原味笔面经
若羽
兰州大学·2022届

阿里、百度、腾讯、华为算法工程师面经(均已拿到offer)

首先先自我介绍一下 我是末流985小硕一枚(本科同校),方向主要是深度学习和数据挖掘,研究生第二年去新加坡交流了一年,研究生期间表现还可以,有一些非主流比赛的获奖,然后3篇sci论文+1篇待发中。 下面说说面试情况,那就按照顺序来了: 1.华为(算法工程师) 华为是我面的第一家公司,8月20号广州优招,现场面的时候相当紧张,2016年的第一场面。。我希望他来的更早一些~~~ 由于面的算法工程师,相关面试官较少,我大概等了3个小时才到我 第一面 (1)先自我介绍 (2)接着问项目,我做的项目主要是深度学习和数据挖掘相关的,所以讲了很多深度学习的东西,然后面试官的部门刚好也在做,所以对深度学习很感兴趣,他们主要用caffe,我的话有对caffe还比较熟悉所以答得比较顺利,然后问了神经网络的优化问题,他们希望把深度学习用到终端上,因为我研究方向正好是模型简化,也实现过一些简化方法,所以也答得比较顺利。 (4)问了一些基础算法,EM算法、决策树、随机森林等 (5)面试官给我介绍了一下他们部门具体是干啥的。。然后夸了一遍他们部门,反正听起来我还是很吸引我的,是我想干的一些事情。 (5)第一面按道理是没有资格谈薪资的,面试官可能觉得更我聊得比较欢,就问我期望薪资。由于是第一场面,也不知道什么行情,我按照往年的行情说了个sp价格,。。。。结果面试官很轻松地表示没啥问题(我就知道自己蠢,说低了,希望最好不要做参考) 第二面 面完一面,我就回去坐了5分钟,第一面面试官就立刻来找我让我去他老大那里面第二面了 (1)一样,自我介绍 (2)项目。。。然后问得很仔细,问了为什么要选用这几种网络,让我对AlexNet、GoogleNet、Inception V3、 ResNet进行了详细介绍,还说了各自的优缺点和参数细节。最后也是说网络优化问题,问得也很细,大部分答得还可以,不过出了一点小问题,这是我事后想起来的,他问问模型简化的时候参数最少可以用多少字节。。我说因为是整数,所以只用一个字节。其实我因为我用char来存的参数,只是后面运算时候转成整型的。所以我想表达的是,我用一个字节的char类型存整数参数的。不知道面试官会不会认为我以为整型是一个字节(泪) (3)问了为什么选华为(家近、我爸喜欢、华为很好巴拉巴拉。。。等等说了一些优点) (4)有没有其他offer...当时没有就说没有。。 然后一个星期前,华为打电话确认我报的岗位,问我有没有很想去的部门,还有说什么没有完全是做机器学习、图片相关的深度学习的岗位,问我能不能接受更广一点的工作范围的机器学习。我说可以。。(估计是去2012了) 2.阿里(算法工程师) 阿里比较意外,当时就是抱着面了又不会怀孕的心态去投的内推。然后7.29打给我电话的时候我刚好在大巴上,不是很方便面试,对方就说晚上打过来,结果我等了接近一个月。。8.25终于打回来了 第一面(40分钟) (1)自我介绍 (2)项目,又是疯狂讲深度学习、数据挖掘的东西 (3)问了很多数据挖掘的基础知识,包括SVM,逻辑回归、EM、K-means等,然后给我很多场景问我遇到这些情况我要怎么来处理数据,怎么进行建模等等,问得很细。 (4)问了一两个算法题,记不清了,只记得其中一个是:找数组中2个出现两次的数字,还有3个两次的数字 (5)好像还有智力题,具体记不清了 第二面(45分钟) (1)自我介绍 (2)项目,然后项目细节,这里面试官还问了我发了论文的东西,我就讲了我其中2篇论文的主要方法和思想。 (3)同样是各种数据挖掘算法基础,跟第一面差不多,但是问得更具体,问了我很多怎么做、为什么,还说了一些比较少见的数据形式问我应该如何处理,为什么要这样做,还有更好的方法吗等等。 (4)算法题,也只记得一个了:存在一个数组,大小我98,里面的元素均为在[1,100],且无重复, 不申请额外空间的情况下,在时间复杂度为O(N)情况下,找出确实的两个元素值。 (4)问了我对未来技术发展的看法,问我觉得未来5-10年什么技术可能变成热门等等开放性的问题。 ps:第二面的面试官是给我offer的部门的部门老大(等级p9),在这里很感谢他,面试的过程中给我很多帮助,而且25号的时候阿里内推时间其实也过了,也是他帮我申请,专门给我延后两天才让我顺利内推近阿里 第三面(30分钟) 也是总监面,不知道等级是不是超过p9,年龄大概40岁吧,视频面试。 (1)自我介绍 (2)因为面我的总监是做nlp的,所以讲了很多rnn、lstm、还有HMM的东西。不算很熟,但是接触过,以前稍微看过一些相关论文,所以还是勉强能聊的。 (3)聊论文,让我把论文从头到尾讲了一遍,说说创新点在哪里,觉得有什么地方可以改进 (4)想在哪里工作、选择地北京、杭州(明显杭州啊,当然如果阿里总部在深圳就更好了)。。 第四面(25分钟)HR面 (1)简单介绍一下自己 (2)为什么选择阿里 (3)在面试过程中觉得自己那些当面有进步 (4)自己本科生和研究生相比有哪些进步 (5)工作地点的问题 (6)有没其他offer 总得来说HR还是很nice,语气很客气,因为是晚上10点后打过来的,还抱歉说影响我休息、挂电话时候还说晚安。 3.百度 百度应该是我面得最艰苦的,算上吹水,5面吧(也怪自己作,不想去北京) 第一面(2小时!!) (1)自我介绍 (2)项目,但是是运维部的机器学习,他们主要还是数据挖掘,所以深度学习他们问得不多 (3)各种基础、网络基础TCP三次握手、Linux线程通信、进程线程的区别、深拷贝浅拷贝、数据库transaction、悲观锁乐观锁等等。。 (4)数据挖掘各种算法,以及各种场景下的解决方案 (5)然后20分钟内手写k-means(给了一个共享编辑代码的页面、不能切出去) 第二面(1小时30分钟!!) 第二面我面的不是太开心,我甚至还有些想原地爆炸。。是个妹子面的,不知道是妹子跟我方向不一样还是怎样。。。我总觉得妹子水平有一点点问题 (1)自我介绍 (2)她说她不懂深度学习。。。所以前面的项目说了她也没听明白,就问了一下数据挖掘的东西 (3)让我一步一步地构造决策树,怎么计算信息熵、信息增益、然后C4.5 ID3 CART的区别,还说了一下优缺点 (4)问我MVC个代表什么。。。。 然后说想问问我数据库的东西,问我项目里面用的啥,我就说原生的JDBC。。她就开始笑了一下,说啊?!那这没什么好问的了。。。。 我大写懵逼 (5)问我hash表实现要素。。。然后问映射函数一般啥方法实现。。。我说一般比较naive的方案是取膜。。然后还有(话没说完) 就听到那边:2333,取膜,好low的方法。。。。 幂次方懵逼。。兄弟,不姐姐我话还没说完呢。。 (6)让我10分钟写二叉树插入方法(非递归) 第三面(还是1个小时30分!!) (1)自我介绍 (2)项目 (3)然后问了很多他们现在的业务优化和处理的问题,比如如何协调广告商广告投递金钱与用户对广告感兴趣程度问题,还有垃圾邮件过滤问题(一些邮件对特定用户并不是垃圾邮件,但是对其他用户是垃圾邮件)。我说的是通过提取用户特征,对用户进行聚类,对属于不同聚类的用户建模,区别化过滤。还有一些其他场景,忘记了,反正主要是看你对业务的分析能力强不强 (4)若干智力题,不难 (5)聊了一下未来计划、有没其他offer (5)如果想来北京,这就是终面。。。。 不想,于是有了后面深圳这边的两面。。 第四面(一小时30分钟) 跟北京那边差不多,介绍项目,分析了一下应用场景,一两个智力题,然后详细给我介绍了一下深圳运维部机器学习做哪些方面的工作现在,问我感不感兴趣,最后说如果我想要在深圳会尽力让HR把我安排在深圳。。 第五面(20分钟)吹水 这个应该是招我那个小组里面的组长,给我介绍了一下他们小组的工作,大概意思是深圳并不是不核心,他们小组也很核心,做的事情也很重要,最后问了一下我兴趣爱好,我说比较喜欢运动,喜欢打球等等,问了一下我身高,我说1米8。。他说了句很好。。。。(这是要肛我?!原谅我在华南基友大学呆的时间太长) 4.腾讯 之前面了TEG一面,后来推我的人说把我简历给了总监和HR,总监说跟他们方向比较合,但是在出差。。。后面找时间跟我聊聊。。。所以暂时在等,后面再补充吧。 现在还没有决定去那里,但是看得出来今年阿里招人比较少、机会很好;百度招人比较严格,问得比较细,几乎全是技术面;华为,我只能说听说给得很高,但是我现在还没通知去谈岗位、薪资等等;腾讯招人也少,特别是SNG。。。工作环境应该是很好的。。毕竟出了IEG其他加班不多。 ------- 10月20号更新 腾讯TEG面试面完,顺利拿到想要的薪资offer 一次性面了三面 一共三个小时(包括技术面、总监面、HR面) 因为是熟人内推,内推部门跟自己做的方向完全相同,所以基本上没有问什么大学课程的基础知识,主要集中在以下几个方面 1.数据安全相关的深度学习相关的问题、项目以及技术(问得非常仔细) 2.讲自己在新加坡的交换经历、以及研究方向 3.为什么不读博、对读博报以什么态度 4.家庭状况、自己性格、未来规划 5.对百度、阿里、华为的看法,是否最终会选择腾讯 PS:面试官没有让我现在写代码,但是在常规情况下是需要写代码的,所以大家平时还是多在OJ平台上面刷题 至此,我的校招也结束了,找工作很累,收获也很多,希望大家都能找到让自己满意的offer.
分享
10
原味笔面经
kkbaleiiii
南京审计大学·2022届

头条用户型产品经理四轮面经

互联网校招中头条的战线最长,以此面经送给即将面试头条的小伙伴: 一面: 1 自我介绍 2 个人项目介绍 3 小红书内容运营话题策划思路,效果(楼主之前在小红书实习) 4 除了策划话题还有哪些相关工作? 5 话题层面的产品优化意见? 6 从宏观角度分析官方话题和用户自建话题的区别? 7 小红书和微博的区别? 8 为什么想做产品经理?自己有何优势? 二面: 1 个人项目介绍 2 实习经历盘问 头条面试官问的很细,会基于你的回答一层层问当时工作的思路,效果。如果现在再做会怎样的思考?感觉考察你在工作中是为了完任务还是真正深入思考过你的工作 3 小红书的产品优化方向 4 评价小红书搜索版块,有何优化空间? 面试官人超好,看我一时没想好还引导我思考,拆分问题。 5 为什么小红书没有优化你提到的方面? 没想到面试官会这样问,所以当时答的不好,面试官也没有深究,不过接下来面试的同学可以思考下产品优化的前后逻辑。 6 在工作中遇到哪些和别人观点不符合的事情? 7 小红书和微博的区别? 8 微博为何取消140字发布限制? PS:一二面整体氛围很好,跟面试官更像是交流探讨,每个问题我回答完后面试官还会复述自己记录的内容问理解的对不对。二面面试官基于我的项目提了很多意见,还向我推荐了一些APP。整个面试中觉得自己学到很多~ 三面: 1 过往实习中产出效果最明显的一件事及具体数据 2 个人项目介绍 3 用过头条系哪个产品?对比下抖音和快手的推荐和评论区,有什么不同?为什么会有这样的不同? 这里有个小插曲:面试官说我的抖音不是最新版本的,让我当场下载最新版本进行对比。 4 打开抖音的搜索页面,与上个版本比有什么不同?觉得还有哪些可优化的空间? 5 产品经理和运营有哪些区别? 6 自己身上有哪些不符合产品经理要求的特点? 7 与开发或技术团队发生矛盾会怎么做? 四面: 1 过往实习中最有成就感的一件事? 2 个人项目介绍? 3 如何确定用户需求?前期如何进行市场分析和调研的? 4 有考虑过你产品的留存问题吗?留存率低的情况下如何调整产品方向? 5 如何理解用户体验? 6 有没有个人主导推动事情进展的例子? 我讲了自己本科带队社团活动的例子,面试官说比较牵强,估计觉得情况不够棘手复杂hhh 7 假如你有足够的资源,现在要做个音乐播放器,你会如何开展?如何确认目标用户的需求和产品定位? 8 最近用过哪个体验感较好的产品? PS:三四面与前两面相比气氛更加严肃,楼主还有些小紧张,偶尔还有些小尴尬,不过跟总监们聊完之后确实能发现自己的问题和短板。
分享
4
原味笔面经
狗头报名
重庆邮电大学·2022届

外企面试经验分享

hi,各位小朋友好,最近总是听到2020届好难;2021届更难的“流行语”。又看到之前我的实习生在找工作,于是趁着休息时间,来给大家讲一些我在外企工作3年的心得体会,以及给大家的一些面试建议。 其实外企的面试,技术和能力的要求和国内企业是差不多的,只不过在这些要求之外,它还对你的英语能力有要求和考察。 和所有的面试一样,自我介绍是第一关,没错,外企的自我介绍要用英文准备,因为面试官可以在你自我介绍中迅速了解到你的英语口语能力,也就是我们说的“Speaking English”。 所以提前准备好,并且多读几遍甚至提前背下来,确保面试的紧张气氛下仍然能够流利的表达出来。那么,一份比较好的英文自我介绍需要包含那些内容呢? 一个完整的自我介绍应该包含以下信息: 姓名+个人标签 毕业院校 工作经历+工作年限 个人技能 自我介绍之后就是正式面试了,如果你的自我介绍内容十分流畅,让面试官一下子就相信了你的口语水平,那之后的面试可能就不会用英语提问了,当然有可能会考你对专业词汇的了解。 但是业务面过了之后,最后两轮面试:leader面试+HR面试,往往还会用英语聊一下基本情况,考察英语日常交流和沟通能力。外企面试经验其实无非就是技术能力+英语能力的双重考核。在掌握了过硬了测试技能之后,能有适当的英语听、说、读、写的能力,那么外企offer也可以分分钟拿下! 当然,可以按照以上我提示的内容,提前准备好相应的素材和话术,让正式的面试更加流畅。总之,做好充分的准备,是一个合格求职者的基本素质!
分享
1
原味笔面经
兔先
湖南大学·2022届

互联网小白笔试经验分享

1. 首先,笔试在不同岗位,题型与侧重点肯定是不一样的,对于学姐所选择的互联网企业校招来说,岗位大致上分为五大方向,产品岗、运营岗、市场岗、管培岗、研发岗,我们可以分类来看下。 2.市场岗与管培岗(非技术类居多) 这两个个岗位主要考公务员考试涉及到的行测题,包括判断推理题(图形推理、类比推理、分析归纳)、阅读理解题(排序题),以我的经验,绝大多数企业以图形推理为主,又因为没有题干,全靠自己推理,所以综合看比较难,建议考前多练习公务员行测题型。 而管培生会考察其他的岗位专业题,按照不同的岗位要求,应该提前做出准备,而且小伙伴们不要被吓到,虽然种类很多,但是大多数是较为基础的问题,稍加练习,是很容易通过的。 3.研发岗(技术类) 最后这个研发岗,我倒是认为不是很危险,因为这个岗位一般面对有一定计算机基础的同学进行招聘,应聘同学一般是有备而来,但要注意不能轻敌,其所考察的编程题,基础编码能力,算法和数据结构题均有一定难度,选拔性很高,需要同学们充分发挥所学进行答题。 最后要告诉大家的是,设计类岗位会要求大家上传作品,应该提前做好准备(文案编辑、视频剪辑类等),而且多了解应聘公司的产品与岗位与大量刷题,都是通过笔试的法宝,希望大家都能过笔过面,拿到满意offer。
分享
5
原味笔面经
麦粒左拉
中国农业大学·2022届

猪场产品运营总结的笔经

最近又到21秋招了,好多人来问我笔试相关的问题,笔试是找工作的第一关,很多人包括我当年也是一头雾水,学姐是19年秋招进的猪厂,前前后后应该是参加了十几家企业的笔试,初期其中很大部分都没能进入面试,但是随着不断地尝试,掌握了很多经验,到最后也可以说是游刃有余了,那今天给大家分享一下如何通过校招第一关—笔试。 因为已经过去好久了,我也是记不清楚具体的面试题了,所以学姐总结了一下多家企业的面试题规律,给大家分享一下。首先强调一下,很多同学认为笔试这关不设置固定分数线所以认为它无关紧要,但是拿往年互联网校招的数据来说,网易放出的数据显示竞争激烈的产培录取率达到1:400,所以大家应该对笔试重视起来。 对于产品和运营岗,可以说是在互联网热潮下,最多人选择的岗位,近几年大量的非计算机出身的小伙伴选择进入互联网行业(学姐也是),而产品与运营因为其低门槛与高包容性,获得了更多人的选择,那么学姐通过自己的经验来详细讲述一下对应的笔试题。 主观分析题(写出一个你喜欢,以内容输出为主的微信公众号或微博、知乎账号并分析说明) 对比分析题(请简述支付宝付款与微信付款的流程与实现) 解决方案题(尝试用互联网思维解决流浪动物或高峰车辆拥堵的问题) 推导估算题(在学校超市待半小时,估算出一天的营业额) 行业热点题(你如何看待美国对于微信与抖音的打击?) 行业常识题(解释专有词语UGC/PGC/OGC)
分享
4
原味笔面经
神颜甜豆本特利

【咨询-埃森哲】埃哲森信息/活跃网络/卓锐科技Java面试经历

埃森哲信息 面试过程: 1、自我介绍,项目介绍; 2、多线程基础,线程安全、socket通信; 3、高并发,订阅分发,自定义协议; 4、Java的socket通信,socket恰巧粘包问题怎么解决? 答:继承Thread类;实现Runnable接口,选这个因为java单继承,这样还有机会集成业务基类或者工作流基类;线程池,不需要自己管理启动,适合无序高并发。 5、长短链接的概念以及它们的区别; 6、如何保证线程安全,需要注意什么?线程安全的集合map和list使用什么? 活跃网络 面试过程: 1、一开始先让根据给出需求写一段代码,很基础的功能。主要看编码习惯,以及结合写出来的代码说说可以优化的地方。然后问如何对自己写的这段代码做单元测试。通过写一段代码看一下工作经验如何吧。 2、接下来是谈自己解决过的比较难的问题 3、然后是问数据库事务相关的问题; 4、如何实现分布式锁? 5、SpringMVC 怎么添加过滤使得避免空指针? 答:可以在javabean上设置注解设置这个字段不能为空; 卓锐科技 面试过程: 1、询问做过的项目,让你介绍工作流程和使用的框架; 2、java 基础、框架、设计模式、数据结构、http; 3、然后是数据库方面,比如MySQL索引策略,SQL 优化等; 4、Java web和框架问的也比较多,拦截器和spring; 5、tomcat、mysql、分布式、缓存、队列; 6、说说final和finally区别,springMVC的工作原理; 7、有问到uml 和volatile; 8、未来技术规划、为什么跳槽?
分享
评论
原味笔面经
蔚蓝Thesky
南京理工大学·2022届

两年银行经验的阿里、头条社招面经分享(已拿offer)

lz是非科班自学的java,毕业后进入卡中心,现在是2年开发经验。20年年初先后面了头条、拼多多和阿里(淘宝和支付宝),并成功拿到阿里和头条两家的offer。 面试前我主要是在牛客网看大家的面经进行查漏补缺,所以面试完后也想记录下来,权当给大家提供点信息吧。(面试过了一周了,记忆也有点混乱,争取想到多少就记下来多少😂😂)。 顺便提一下面试体验:头条 > 阿里 > pdd 拼多多最垃圾的面试体验,没有之一。我约的视频面,结果面试官说有事给我打电话面,然后给我一个文档,是一个算法。我在写算法的时候没察觉到电话信号不好断掉了。然后我回拨过去,面试官来了一句:你不要故意挂断电话去查答案。我%@#¥@#%@5,保持微笑解释信号不好。后来为了信号好一点我去阳台面试,冻的瑟瑟发抖,这个时候心态已经炸了,又冷又紧张,算法题有思路但是一直被这个人否定,最后挂了。 头条 最开始面的头条游戏中台,当时是第一次面试,没有经验,导致算法题虽然有思路,但是没有写出最优解,直接挂了。后来又被捞起来,因为此时已有阿里的offer,所以胆子也大起来了,收拾心情开始面头条。 头条的面试特点基本就是一个套路:【自我介绍】->【项目介绍】->【手撕算法】->【基础知识】,屡试不爽。 自我介绍:我是xxx,来自xxx,毕业后在xxx几年,期间负责xxx。 项目介绍:xxxxx。项目的时候面试官会问你难点和解决方案,同时会给你提出场景,问你更优化的思路。 手撕算法:多刷题,也可以看看别人面过的算法题,可能会重复。 基础知识:针对简历写的东西问,我被问的较多的是一些中间价,Redis、MySQL、Kafka、ElasticSearch,Java基本没问,因为头条这边使用Go。 【一面】 Two Sum 给定m个不重复的字符 [a, b, c, d],以及一个长度为n的字符串tbcacbdata,问能否在这个字符串中找到一个长度为m的连续子串,使得这个子串刚好由上面m个字符组成,顺序无所谓,返回任意满足条件的一个子串的起始位置,未找到返回-1。比如上面这个例子,acbd,3。给定m个可能重复的字符[a, b, d, d]呢? 提供一个整型数组以及一个整数s,如果该数组中存在n个连续元素,且元素相加之和大于等于s,则返回满足该条件的连续元素的最小长度;否则返回0MySQL集群。假如集群出现延迟怎么处理。Redis的zset实现延时任务设计题:如何设计tiny url要四次挥手HTTPS第二天收到hr小姐姐的电话,约了面试时间。 【二面】 自我介绍 项目介绍 K Group反转链表。写了栈和迭代两种实现方式,链表的题写起来真痛苦,很容易边界出错。 Redis的持久化机制 MySQL的隔离级别 MySQL索引,聚簇索引和二级索引 Redis高可用方案 介绍一些Kafka的一些概念 Kafka如何保证消息有序 过了一天又收到hr小姐姐的电话,开心。 【三面】 自我介绍 项目介绍 第K大的数 设计题:秒杀系统 MySql的索引优化 HTTPS 三面完了正好是周五,忐忑的等到了周一,以为挂了。结果下午收到hr加微信,约了hr面。 【hr面】 为啥离职,怎么想的 介绍项目 怎么和团队的人沟通,和成员出现冲突时怎么解决。 期望薪资,你现在的薪资,三个工作日收到了offer,头条面试体验还是很棒的。 找朋友内推的蚂蚁金融核心,结果第二天就被拒了,杭州淘宝给我来电话,说我被捞起来了。确认了一下,确实如此,那就面吧。 阿里 还是很想去阿里的,所以也很忐忑,淘宝一共经历了4轮技术+1轮笔试+hr面,流程很长,面的我压力山大。 阿里的面试特点:【自我介绍】->【项目介绍】->【场景解决】->【基础知识】,阿里面试除了基础以外,也很看重候选人的解决问题的思维。还是需要候选人有点积累的,假如你写的项目不是自己的,很容易就被问出来。 【一面】 自我介绍 项目难度介绍 如何实现延时任务 如何实现限流 线程池的参数 能不能自己实现一个java.lang.String并加载 Redis为什么这么快 epoll和poll的区别 进程同步的方式 【二面】 MySQL的索引机制 如何自己实现内存分配和管理?不太懂,然后说了jvm的垃圾回收机制 你们公司内部的RPC框架,介绍一下 Redis的key过期策略 缓存穿透和缓存雪崩 分布式锁 如何实现全局的id生成策略 悲观锁和乐观锁 红黑树了解么 【三面】 如何实现群消息已读 消息推送如何保证不重复 Kafka如何保证消息的可靠性 RPC是什么,和http调用有什么区别 说一说你项目的架构 GC MySQL的索引原理,给了一个场景,如何优化 ...忘了 面完3面后居然又来了一个笔试题 【笔试】 producer-consumer 两线程交替打印 多线程模拟100分钱随机分给20个人,每个人最少分配到2分钱 【四面】 写个producer-consumer吧,我说上次写过了。。傻了。。不该说的,然后面试官换了一道题,还好比较简单,写个二分查找,2分钟写完完事。 项目难点 MVCC HTTPS ElasticSearch的查询过程 Kafka如何保证高可用 Reids的集群和选主 知道什么分布式一致性算法 如何实现定时关单 【HR面】 阿里的hr面真是让我难忘。 说说看,假如你是部门技术经理,线上商户数据丢失怎么办 怎么将一个产品推荐给其他的团队,怎么界定边界 怎么样协调关系 (我才2年啊喂,到这里我已经快冒汗了,生怕最后一关毙掉了) 你和同事相处的情况怎么样,说说你帮助同事的一次经历 薪资 阿里的面试流程很长,而且一个部门挂了以后,会被另一个部门捞起来,不停的面。总之来说,阿里的面试体验也还不错,就是经常被放鸽子。 支付宝的面试经验其实也大同小异,我就不贴了。
分享
17
原味笔面经
Larry Wang
中南财经政法大学·2022届

2020字节跳动抖音前端架构组实习生面经(offer已到)

个人背景: 武汉理工大学(211)计算机系大三下,准备找实习。最近找大佬内推,投了北京字节跳动,据说是非常核心的一个小组,一年只招两个实习生。 3月17日下午 抖音前端架构组实习生 一二三面 + HR 历时约 3.5 小时。 这份面经和牛客上的其它面经不太一样,不仅仅列几个题目就完事儿,中间掺杂了一些个人的一些表现以及和面试官的互动,让大家能更完整地感受到整个过程。另外,大厂面试嘛,你懂的,面试官喜欢从一个点切入往深了问,所以在会有非常多嵌套的问题,我觉得这才是真正的面试场景,而不是一条一条堆砌题目,跟做考试试卷一样。 【抖音一面45min】 自我介绍一下 VueRouter 的原理你能不能说一下呢?(两种路由方式说了一下) 对于 History 路由而言,你觉得在服务端是如何做路由分发的呢?(愣住,面试官接下来跟我解释了一波) 你说你看过 Vue 源码,能不能介绍一下 Vuex 的 Mutation 和 Action 的区别吗?(mutation做同步操作,action一般用于异步) 为什么要设计出 Mutation 和 Action 这两个东西?(我开始不是很清楚,扯到 Redux,和面试官交流后,一致同意 Action 作为业务逻辑的封装更合适,提供了更大的自由度) 计算机网络看你写过文章,我就不问了。(我: 笑...)问你一点操作系统的哈,能不能说说磁盘寻道算法?(思考了一下,说了三种,FIFO,最短优先,电梯算法) 那你能不能说一说最短寻道时间优先的缺点是什么?(愣住,面试官耐心给我解释其实会造成远处的任务饥饿问题) 进程和线程的区别(解释了一波,顺便把Chrome为什么从单进程转成多进程架构说了一下) 知道哪些进程间通信(IPC)的方式? (主从式、会话式、消息-邮箱机制、管道、共享内存、Unix Domain Socket,然后跟他讲我看过 Chromium IPC 的源码,内核里面把以前的 ChannelPosix 换成了 ChannelMojo,从而达到线程安全的目的,顺便解释了下线程安全,面试官表示很欣赏,说这个都看过,看来你学了不少) 能不能说说从输入 URL 到页面渲染经历了什么?(被问过很多次了,DNS 解析过程,HTML词法分析和语法分析,CSS解析,合成图层、合成线程调用光栅化线程池,生成位图后浏览器进程间通信过程,显卡缓存与显示器的关系,面试官说可以) 给你一道算法题,盛水最多的容器。直接给我一个最优解吧。我花了 15 分钟写完了,时间复杂度O(n),结果能跑通。给他解释了一下思路,他说这个算法核心的思路是什么?我说短板效应吧,他说其实是贪心。没答上来,感觉比较尴尬,我灵机一动,说可能贪心已经潜移默化到我的思想里面了吧,他大笑,说可以、很强,稍等一会儿去叫二面面试官。一面就这样愉快地结束了。 【抖音二面(1个小时)】 这个面试官就比较高冷了,全程不露脸,说话语气特别凝重,可能沉默 5 秒钟然后问你一个非常严肃的问题。 简单的自我介绍 ES5写一个数组去重(刚开始写了一个O(n^2)时间的) 能不能优化? (我问能不能用新空间,他说可以,然后写了一个O(n)时间的) 能不能区别开数字和字符串?(想了想,最后还是用indexOf方式,最优的没想出来,面完猛然想出来了,当时脑子有点乱) 讲一讲 HTTPS 加密(对称加密有AES + CHACHA20, 分组模式以前有 CBC、CTR,TLS1.3 中只剩下 GCM,非对称加密 RSA、ECDHE) 怎么握手的呢?(讲了三个版本:传统 RSA、TLS1.2、TLS1.3, 后面也讲了 TLS1.3 的 Session ID、Session Ticket 以及 PSK) HTTPS 如何保证数据是否被篡改?(说了下有签名的过程) 签名是什么原理(私钥加密,公钥解密,比对哈希摘要) 你知道哪些哈希摘要算法(Sha256, Sha384) 你能不能介绍一下你的项目(说了下项目遇到的挑战,说了这几点: 1. 怎么解决闭包陷阱。2. 通过 EventLoop 解决 transform 失效的问题) 能不能说说你对 EventLoop 的理解(宏任务-微任务-UI渲染) 如果要在UI渲染之前做一些事情你会怎么办?(我会启动微任务执行吧) requestAnimationFrame 在 EventLoop 中是一个什么位置?(给他解释显示器和浏览器的 Vsync 信号,然后rAF首先执行,他貌似不满意,我请教了他一下,给我解释实际上rAF会在UI渲染之前) 分离图层做动画有什么好处呢?(给他讲了分层的原理,通过设置 CSS 的 will-change 可以转换为一个图层,调用 GPU 加速) 分离图层会发生重绘吗?(会)那既然重绘,它的好处在哪里?(不会影响其他的图层) 你觉得你哪些技术比较厉害?(Vue 源码,浏览器,服务端渲染) 你说你看过 Vue 的源码,能不能说说 computed 属性为什么能够在依赖改变的时候,自己发生变化?(我说 computed 和 watch 公用一个 Watcher 类,在 computed 的情况下有一个 dep 收集依赖,从而达到更新computed属性的效果,顺便跟他讲了computed Watcher如何跟渲染Watcher关联,以及 Vue 在二次收集依赖时用 cleanupDeps 卸载一些无用的 dep) 你觉得你的优势是什么?(1.深度思考的能力 2.善于分享 3.社区影响力) 你对 webpack 了解多少?(我说了下 webpack 的一些优化手段,打包时间方面,预编译、缓存、缩小构建目标,说了大概十个插件,然后打包体积上,JS 和 CSS 的Tree-Shaking 怎么配置) 你觉得 CommonJS 为什么不能做 Tree-Shaking ? ESModule 既然是编译时加载,那它可以做到运行时加载吗,想过这个问题吗?(愣了一会,说webpack 有动态 import 的方式) 写过 loader 和 plugin 吗?(实话实说,没有)那你知道两者有什么差异吗?(先loader后plugin) 你对未来的发展是如何规划的?(谈了谈我对五级工程师的看法,我的阶段目标是到达最低的第五级) 你觉得你在专业上的目标是怎样的?(成为领域前20%) 有什么想问我的?(问了下可能触及的技术栈,以及抖音在开源方面的打算) 【抖音三面(1个小时)】 这位小哥还是比较和蔼的,聊的很多东西跟具体的技术细节就关系不大啦。 你是如何接触到前端的?为什么要选择前端?为什么不去搞 c++ 底层系统研发、后端、人工智能?(说了下我的看法,他表示认可) 对学校的课抱着什么样的心态? 做这个项目的初衷是什么?里面有用到专业上学到的知识吗? 如果每次要生成不一样的 ID,你怎么来设计这个系统呢?(跟他聊了聊哈希冲突如何解决,他表示可以) 在学校应该学过 C 吧,你觉得 C 语言在设计上有什么好或者不好的地方呢?(提了下虚基类,实在想不起来这玩意啥用了,顺带说了下多继承的问题) 如果让你用 JS 来实现多继承的功能,你会怎么来做呢,或者用什么其他的方式?(说了下自己对于继承的看法,以及这个设计不太好的地方,然后更喜欢组合式的方式) 比如说你是你妈妈的儿子,同时也是公司里的员工、学校里的学生,你怎么去设计出你这个实例呢?(将不同的角色功能进行组合,然后实例化) 对前端的知识体系如果要分类的话,你怎么分类?(谈了谈未来前端发展的四个分支) 如果基础知识要细分的话,你怎么来分?(说了下学习基础知识的三部曲,第一级应用,第二级原理,第三级建设社区和贡献代码,我觉得我目前在第二级到第三级之间) 有想过去做一个开源的工具吗?(谈了谈自己对于开源的理解) 在学校有参加什么社团吗?(有,在学校的一个协会,带组内的人一起学习) 有什么想要问我的吗?(聊了聊面试官自己的技术经历,全程还是蛮愉快的) 【HR 面:(30min)】 做项目的初衷在什么地方? 歌曲倍速播放的功能是怎么实现的?为什么要想到这个? 公司的业务可能会压榨自己开源分享的时间,你会介意吗? 公司内的一些代码不能开源,和你自己的开源分享冲突了,你怎么办? 你为什么不早点去实习?现在才开始找实习? 看了你的 GPA ,还是蛮靠前的,你怎么平衡学校的学业和技术的学习的? 怎么看待别人在你博客下面发一些怼你的评论? 在学校有社团经历吗? 自己平时有什么兴趣爱好? 和室友关系咋样? 整体感受 面试了一下午,前面三面连续说了太久,到 HR 面的时候声音已经嘶哑了,不过字节的面试体验还是非常好的,效率相当高。自我感觉还算不错,主要是因为两点: 面试官问的问题都是引导性的,而不是死扣一个具体的知识点叫你填空,通常给一个非常宽泛的话题,让你去发挥,因此给了自己非常大的发挥空间,不过这也和自己前期充分的准备有关系。 面试官尝试去问你一些更加深入的问题,直到把你问住,这是好事情,因为他的水平一般在你之上,能问出深度来,说明他很重视你。 整体的难度并没有我想象中那么恐怖,另外如果大家对面试当中的里遇到的一些问题比较感兴趣,想深入了解一下的话,可以去我的博客,之前系统整理了不少知识点了,希望对还在春招路上的各位有所帮助吧。
分享
9
原味笔面经
kevin

春招前端面经集合

一、 路口(二面挂) (一)电话一面20180309 http状态码及含义 http请求头报文的结构 http和https的区别,https在哪一层加密 Js中的原型和原型链 Js中prototype和_proto_的区别 Js中函数调用的方法 说一下闭包,为什么要用它,解决方法 Jq中实现链式调用的方法 Bootstrap实现响应式的方法,说一下栅格系统 Sass中用过什么方法/函数 Vue的生命周期及每个阶段的特征 Position的区别 display:inline和float:left实现行内布局的区别 怎样处理父元素高度塌陷 (二)现场二面20180310 说下近半年中项目中遇到的难点 链表的结钩是怎样的,链表的插入和删除哪个快,查找某个节点的时间复杂度 Cookie和session的区别 二、 美的(20180313一面挂) 一面是群面,十几个人进去,有三个面试官在前面,流程是这样的:首先每个人30秒的自我介绍;然后每个人说一下自己大学最有意义的事情;最后,针对不同的岗位提出一个问题,由应聘相应岗位的人进行回答。我们那组加上我有五六个应聘前端的,其中有两三个还是硕士,问题一:服务器有哪些;问题二:前端查看cookie的方式。感觉先回答的人都回答得蛮好的,所以我也就没有说话机会哈哈哈。 最最后,一面挂哈哈哈。反思了下,觉得在讲大学有意义的事情时,应当尽可能地往自己应聘的岗位上将,尽可能凸显岗位知识给他人带来的帮助;再者,回答问题阶段,应当积极发言,而不要采取观望的态度,不然整场面试下来,会没有存在感。 三、CVTE(20180314二面挂) 一面: 说一下项目,主要负责什么 常见的状态码 闭包及其应用场景 块元素的垂直水平居中 点击外部弹窗消失,点击内部则不会 服务器怎样判断返回304 实现如下代码: Calculator(10).add(4).reduce(3).time(2).divide(2).print(); // 11 二面: 为什么选前端 有什么事觉得有成就感 算法:找出一个字符串中第一个出现的唯一字符串的下标 布局题:上中下三部分屏幕宽,上下定高,中间高度自适应,且中间部分由左右两部分组成,宽度占比为3:7 3-5年职业规划 项目的开展过程 说一下实习都做了什么 四、平安科技(20180323一面挂) 说一下你做过的项目(现场打开来看) 性能优化(整个网站已经建好) prototype和__proto__的区别 function和object原型之间的关系 缓存处理(用http2.0) 移动端click和tap事件的区别 如何处理,0.5px的实现 h5的新特性 本地存储的方式 他们的技术:nodejs+mongdb,react,后期会转vue 五、珍爱网(20180324二面挂) 因为是内推的,所以直接就二面。 前端304 数据双向绑定的原理 页面访问人数的统计实现原理 项目的安全问题 js闭包 千分位实现(考虑到负数及小数点等情况) 个人博客中赞赏页面如何响应式 计算首屏加载时间,什么是首屏 输入url发生了什么事 DNS根服务器是什么意思 如何统计全国单身男女 http、https、http2.0区别 技术栈采用vue和react,觉得angular门槛高 六、中移物联网(20180327二面挂) 一面(三个面试官,一个问基础,一个问项目,还有一个问人生): 详细介绍项目,说下和后端交互中遇到的问题 说一下js里的基本数据类型 数组去重 选择前端的理由 父母对你职业的期望 觉得自己的抗压能力怎样,最近有没有遇到特别难的事情,怎么处理 对物联网这一块的了解 二面(现场hr+三个远程技术官): 三个远程面试官主要是问你的项目(技术难点、安全处理),平时在哪些网站上泡着,是怎么学习前端的,给自己的能力打分,在编程课方面的学习成绩怎么样?在学校的排名,拿过多次奖学金 Hr问学习经历,对公司的要求,对物联网的了解以及对中国移动和中国联通之间的对比。 七、拼多多(offer) (一)电话一面20180327 说下实习中的事情 项目中搜索功能的实现 数据展示时冲突问题的处理 项目的技术选型,jq和vue的区别,vue的优点,页面中的组件 Vue父子或兄弟组件的通信 什么时候入门前端,选前端的理由 用过react和angular吗 Es6中let、const和var区别,说下块级作用域 箭头函数,箭头函数中this的指向,给出实际场景并说出其中this的指向 移动端项目适配的实现 Flex布局 Cookie、sessionstorage、localstorage的区别,如果获取localstorage的所有key (二)电话二面20180330 Vue生命周期 Vue组件通信的方式 说一下BFC 清除浮动的方式 Js事件委托 Js中_proto_,说一下原型链 水平垂直居中实现 Flex布局 了解哪些设计模式 说一下稳定和不稳定的排序有哪些 快排时间复杂度,基准元素选择的优化 (三)Hr面20180408 怎么学前端 对加班的看法 绩点方面怎样 职业规划等 八、兔展(20180414offer) 一面: 二叉树 写快排(写不出来,后来写了选择) 项目难点 跨域(jsonp,postmessage) 事件循环 ajax原生写法 Promise给出例子说出对应的结果 input实现勾选 深拷贝 js中this 算法原理 http和https区别,https是否绝对安全 水平垂直居中 三次hr面 九、依图(二面挂) (一)电话一面20180508 Vue生命周期 Vue双向绑定的实现 说一下promise,then调用返回的是新的还是旧的对象 水平垂直居中 只有一个DOM元素,用CSS的方式实现两色效果 一个数组只有1和2,排序,1在前面,2在后面 JS的事件模型,捕获和冒泡,阻止冒泡 preventDefault和stopPropagation区别 之后发了个邮件让三十分钟内做三道代码题:一道是刚刚那个算法题;另一个是实现sum(a,b)和sum(a)(b)一样效果;还有一个是在x轴上0点处有个小机器人,他可以往x轴方向走一步,或者走当前距离的两倍。比如可以从2走到3或者从2走到4,都算一步。请实现函数int count(int dest) {},返回小机器人从零点走到dest的最少步数。 (二)现场二面20180512 Vue双向绑定中数据和DOM变化的过程是怎样实现的 说一下项目难点 垂直水平居中实现 给出一个数组,数组中的元素为文件对象,存储了文件的一些基本信息,其中有个parentId,要求实现一个函数,返回根节点,根节点信息中有个child,存储该节点的子节点 十、携程 选了远程,之后就没反应了哈哈哈
分享
7
原味笔面经
魅不可挡。
南京师范大学·2022届

19年苏宁产品经理笔试,热腾腾的笔经啊~~

一、单项选择题 1、GMV、IPV_UV是什么 2、网页信息大约会存储在哪里(这个记不清了,当时理解的是网页缓存数据会存在什么地方,选了cookies) 3、Axure中菱形原件一般用于流程图的什么 4、调整商品标题是为了提高什么流量(徘徊于搜索流量与首页流量) 5、以下哪个不是支付App(财付通,苏宁金融,陆金所,财付通) 6、苏宁的吉祥卡通形象是什么 7、产品经理的工作不考虑什么(求补充) 8、B端产品设计 9、以下哪个不是互联网产品 10、什么是PV 11、以下是苏宁会员积分产品的是 12、产品经理第一本书的作者是 13、需求管理最后一步 14、与xmind功能相似的是什么App 15、DAU是什么 16、CRM是什么 17、竞品分析方法不包括什么 18、产品经理需考虑什么需求 ...(还有两个题记不得啦) 二、多项选择题 1、项目范围规划 2、产品分解结构 3、不属于Swot分析的元素是 4、以下哪些是项目 5、以下哪些什么是零和博弈 三、解答题 1、用5W1H的方法做需求分析 2、有9块蛋糕,4个盒子,如何在每个盒子中放入至少三块蛋糕,如何分配?(脑经急转弯,考察分析问题的思路?) 欢迎补充呀~~~
分享
2
原味笔面经

超级简历 APP

从简历直达offer,快人一步拿高薪

🔥 热门话题
1597 名用户正在讨论
669 名用户正在讨论
1284 名用户正在讨论
863 名用户正在讨论
433 名用户正在讨论
最新内推
35 名用户可以帮你内推
16 名用户可以帮你内推
13 名用户可以帮你内推
10 名用户可以帮你内推
9 名用户可以帮你内推