辣条走起,原创不易~
前言
创新工厂/涂鸦移动,李开复创办的
笔试
我没有走提前批,走的秋招,笔试是对方给我发一份邮件,里面有一份word文档,然后里面有两道编程题,需要这份word文档的后台回复 创新工厂
题目一
1.你能在多大程度上将一叠卡片悬置在桌子上?如果你有一张卡,你最多能创造半张卡片长度的悬置(假设卡片必须垂直于桌子)。使用两张卡片,你可以让顶部的卡片在底部卡片的基础上悬置半张卡片的长度,且底部卡片在桌子上悬置1/3卡片的长度,这叠卡片的最大悬置长度一共为1/2 + 1/3 = 5/6卡片长度。一般来说,你可以让n张卡片的悬空长度达到1/2 + 1/3 + 1/4 + … + 1/(n + 1)卡片的长度,即顶部卡片在第二张卡片的基础上悬置1/2,第二张卡片在第三张卡片的基础上悬置1/3,第三张卡片在第四章卡片的基础上悬置1/4,以此类推,底部卡片会在桌子上悬置1/(n + 1)。正如下图所示。
请实现函数
题目一解答
int number_of_cards(float length)
{
if(length <= 0)
return 0;
float i = (float)1.0;
float sum = (float)(1.0 / (i+1));
while(sum < length)
{
i++;//就是上面标注字体的实现,每次都加1/(i+1),题目已经给出公式
sum = sum + (float)(1.0/(i+1));
}
return (int)i;
}
题目二
爱德华有1个包含N个整数的数组A,他定义1个数组的美丽值为数组中所有不同整数的和。现在爱德华想知道数组A的所有连续子序列的美丽值之和。
请实现函数:
题目二解答
int beauty_of_array(int[] array)
{
int sum = 0;
int length = array.length;
for(int i=1;i<=length;i++)//i代表子序列的长度从1开始最长是数组的长度
{
for(int j=0;j<array.length;j++)
{//j代表从数组的第几个数开始找i长度个数,穷举
Set<Integer> set = new HashSet<>();
int temp = j+i-1;//temp用来记录从j下标开始,到i长度后的下标为止,比如i取2,也就是子序列长度是2,那么temp就是j+2-1
if(temp >= array.length)
break;//如果下标超过数组长度,break掉
for(int k=j;k<=temp;k++)
set.add(array[k]);//由于是不重复的,加入集合
Iterator<Integer> iterator = set.iterator();
while (iterator.hasNext())//遍历集合求和
sum += (int)iterator.next();
}
}
return sum;
}
一面
电话面试,时长半个小时,全程没问任何项目,一直在问基础知识点。
1.自我介绍一下。自我介绍完,我以为要照例问我项目,但面试官没有问,直接开始问我基础知识点了)
2.java的几种数据类型?
3.每个字节的计算机占用的位数?
boolean/1
byte/8
char/16
short/16
int/32
float/32
long/64
double/64
4.java的这些字节长度在不同平台会发生变化吗?
int 和 Integer有啥区别?
5.然后接着问我,Integer i = 88; Intrger j = 88;比较(i==j)结果是什么?
6.那Integer i = 200;Integer j = 200;他两呢?
7、为啥?原因知道吗?说一下。
public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }
8.然后接着问我,char可以存储汉字吗?如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。
9.然后问我了我计算机网络的知识,https是什么?
10.ssl的加密原理是什么?
11.RSA原理说一下?这里大家如果不懂RSA就在ssl加密原理那里说RSA的握手协议了,直接把那5步说一下也行。这个RSA由于我本科信息安全的,经常接触,所以基本可以把下面的步骤说一遍。
12.TCP和UDP的区别讲一下
13.TCP三次握手说一下。
14.为什么要用三次握手,不是两次呢?
15.然后问了我七大排序中,的最好最坏时间复杂度?
16.接着问我,哪些是稳定,哪些是不稳定?
17.接着问了我两道算法题,如何判断链表中有环?
18.接着问我,如何判断两个链表是否相交?
有一些问题忘了,大体上问的问题都很基础。
二面
电话面试,时长半小时,感觉创新工厂很卡时间,时间一到,立马结束面试。面试官让我准备好纸和笔,然后问了我两道动态规划的题目。
自我介绍
问我了解动态规划吗?
然后考了我一道剑指offer的题,连续子数组的最大和。
import java.util.*; public class Solution { public int FindGreatestSumOfSubArray(int[] array) { if(array.length <= 0) return -1; int realMax = array[0]; int currentMax = 0; for(int i=0;i<array.length;i++) { if(currentMax + array[i] >= array[i]) { currentMax += array[i]; }else{ currentMax = array[i]; } if(currentMax > realMax) realMax = currentMax; } return realMax; } }
然后他感觉我没用动态规划方程,他说你这个没有用动态规划做,然后又给我出来一道动态规划的题目。
由于这个时间太久远了,这道题目具体是啥,实在想不起来了,只记得当时我强行套状态方程,把思路说了一下,然后面试官最后给我讲了一下这道题的思路,最后面试就结束了。
hr面
印象中没有hr面,二面结束然后过了一天通知我面试通过了,然后发了offer,当时看到创新工厂开的offer,还是很吃惊的,感觉相对于其他互联网公司真的有点少,具体薪资大家可以去offershow搜一下。
End
关于本号
作者乔戈里亲历2019秋招,哈工大计算机本硕,百度java工程师,欢迎大家关注我的微信公众号:程序员乔戈里,公众号有3T编程资源,以及我和我朋友(百度C++工程师)在秋招期间整理的近200M的面试必考的java与C++面经,并有每天一道leetcode打卡群与技术交流群,欢迎关注。
3T编程资料等你来拿
等等,先别走![程序员乔戈里]公众号又有活动了!参与活动,不仅可以培养自己良好的习惯,还能拿到“现金红包与书籍奖励”,动作要快,姿势要帅!
今日问题:
(辣条走起)看了以后,如何看待创新工厂这家公司?
留言格式:
打卡xx天,答:xxx