搜狐面试题

搜狐面试题

搜狐面试题

1.介绍一个印象深刻的项目,遇到过什么问题,怎么解决的。

组件化为什么没有用一个通用的字典来接收页面参数,这样不是更通用?

webView 交互协议怎么制定的?H5 从原生拿返回值怎么实现的?

2.做过哪些优化

3.你觉得你最擅长哪方面?比如 UI、架构啥的

4.微博详情页(内容、转发、评论)让你来做,你会怎么实现?从外层到内层用什么控件,具体实现。

5.算法题

有一个产品发布了多个版本,它遵循以下规则:假如某个版本崩溃了,则后面的所有版本都会崩溃。

举个例子:一个产品假如有5个版本,其中第1-3版本都是正常的,但是第4个版本崩溃了,那么第5个版本(最新版本)一定也崩溃,第4个版本被称为第一个崩溃版本。

现在已知一个产品有n个版本,而且有一个检查算法func isBadVersion(version:Int) -> Bool 可以判断一个版本是否崩溃,假设这个产品的最新版本崩溃了,求第一个崩溃的版本。

思路:本质上是有重复数字的升序数组的二分查找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function search( nums ,  target ) {
let start = 0
if(!nums.length) return -1;
let left = 0, right = nums.length - 1;
while(left <= right) {
let mid = Math.floor((left + right) / 2);
if(target == nums[mid]) {
while(mid != 0 && nums[mid - 1] == nums[mid]) mid--; // 找到第一个数
return mid;
} else if(target < nums[mid]) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}

6.想实现一个图片,删除后撤销删除,你会用什么数据结构来怎么实现?

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×