国内某社交通讯大佬面试题(二)

面试时间:2016/04/07
坐标:上海
岗位:iOS开发实习生

额。面试下午两点开始的。一开始给了一套笔试题。上面就三道题。我就凭记忆大概说一下。
(1)在一个整型数组中找出所有前k大的数。
答:这个问题随便一搜就很多答案了。。没啥好说了。。我当时是建了个最小堆保存k个数,第k+1个元素开始和最小堆堆顶元素比较,再判断是否要移除元素重新建堆。。就说这么多了。。

(2)给一个正整数n,输出所有的包括(1—n)的数字作为节点的BST树的数目。。比如n=2,结果为2; n = 3,结果n = 5。如下图所示:
这里写图片描述

答:我使用了递归的方法。一开始画了n = 4的情况分析找规律。然后发现只需要计算以某个值n=i作为根节点,递归计算其左右子树的情况然后想乘即可得结果了。(记得BST有个特性就是右子树中所有节点值都小于父节点值,左子树中所有节点值都大于父节点)。
所以我们拿n=4来分析的话就是,分别以1,2,3,4作为根节点时:
(PS: 我们可以把空子树看做是一种特殊的子树情况)

  • 当 root = 1时;计算空右子树和[2,3,4]组成的左子树。而2,3,4组成的左子树则刚好是n=3结果。
  • 当 root = 2时;计算[1]右子树和[3,4]左子树,这是相对简单的两个情况。
  • 当root = 3时;计算[1, 2]右子树和[4]左子树;
  • 当root = 4时;计算[1,2,3]右子树和空右子树;

额大概就是这样的一个过程了。。代码我就懒得写了。。有空补上吧哈哈哈。。。

(3)有一辆火车需要从A地运送煤炭到B地,其中A距离B地1000米。起始A地有3000煤炭,火车一次最多拉1000煤炭,并且火车每走1米则消耗1煤炭。问怎样运输可以使得B地的煤炭最多?

答:= =。我不知道最终答案。这题大家注意两种情况,一种是火车返回时候不消耗煤炭,另一种则是火车返回也消耗煤炭。。两种情况计算结果是不一样的。。
我直接给我在两种情况下的计算结果吧,有能算出更多的结果的记得分享分享!
第一种:第一段走334,第二段走499,第三段走157,B地剩843。
第二种:第一段走200,第二段走334,第三段走466,B地剩534。

然后开始各种面试了。我大概想了一下就是以下的问题吧。
1、自我介绍
2、项目介绍,其中哪个项目印象最深刻、怎么做的
3、STL
4、iOS开发有哪些方式写界面,最常用哪种,代码布局
5、多线程方式有哪些
6、数据持久化方式有哪些
7、操作系统中的内存管理,分页管理
8、还有一些其他乱七八糟的,不记得了。。。

然后又甩了一道题给我做。。。没错又写代码鸟。。。这个就不说了吧哈哈哈哈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值