基础篇

从输入一个url到页面出现经历了什么过程

1.  DNS解析
2.  TCP连接
3.  发送HTTP请求
4.  服务器处理请求并返回HTTP报文
5.  浏览器解析渲染页面
6.  连接结束

参考:从输入一个url到页面出现经历了什么过程

epoll 和 select 的区别

epoll和select都是I/O多路复用的技术,都可以实现同时监听多个I/O事件的状态
区别:epoll相比select效率更好,主要是基于其操作系统支持的I/O事件通知机制,而select是基于轮询机制



快速定位PHP慢的地方

使用phptrace进行跟踪





算法题:

问:实现整数转二进制字符串函数 ToBinString ,例如,输入 3 输出 "11",输入 11 输出 "1011"。
php版:

//php实现进制转换
function dec2bin($num)
{
    if ($num == 0) return 0;

    $flag = array();
    while ($num != 0) {
        array_push($flag, $num % 2);
        $num = (int)($num / 2);
    }
    $result = '';
    while (!empty($flag)) {
        $result .= array_pop($flag);
    }
    return $result;
}

echo dec2bin($n);

问:实现返回一个由英文字符组成的字符串含最大不重复字符子串长度,并添加测试用例。

php版:

<?php

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:

输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:

输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:

输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
  请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

 
class Solution {

    /**
     * @param String $s
     * @return Integer
     */
    function lengthOfLongestSubstring($s) {

        $l = strlen($s); //获取字符串总长度
        $len = 0;   //记录长度
        $find = ''; //保存截取字符串

        for($i=0;$i<$l;$i++){
            $res = strpos($find,$s[$i]); // 查找$find中是否存在

            if($res !== false){

                $find.=$s[$i];

                $find = substr($find,$res+1);

            }else{
                $find.=$s[$i];
            }

            $len = strlen($find) > $len ? strlen($find) : $len;
        }
        return $len;
    }
}

golang版:

//寻找最长不含有重复字符的子串,里面的rune直接把中文转为一个字节,中英文一起操作
func lengthOf(s string) int{
    lastOcc:=make(map[rune]int)
    srart :=0
    maxLength:=0
    for i ,ch :=range []rune(s){
        if lastI,ok:=lastOcc[ch];ok&& lastI>=srart{
            srart=lastI+1
        }
        if i-srart+1 >maxLength{
            maxLength=i-srart+1
        }
        lastOcc[ch]=i
    }
    return maxLength
}

个性推荐

对社区APP,根据用户与文章的互动偏好和热度进行个性推荐,进行系统设计
问题描述:
场景:
社区文章100w+,问题30w+,每日活跃用户数8w+,首页的内容版块刷新获得高热度的个性偏好内容推荐
条件:
文章热度的相关系数:推荐曝光(+1)、浏览(+2)、页面停留时长 > 5s(+3)、点赞(+5)、关注(+8)、分享(+12)、评论(+15)(作者与自己文章的互动不计热度)
热度值的计算:系数触发的次数*系数分值
例如一篇文章的的数据显示为:
2000次推荐曝光,100次浏览,30个停留5s以上,10个点赞,2个关注,1个分享,4条评论
则,该文章的热度为:
20001+1002+303+105+28+112+4*15=
2000+200+90+50+16+12+60=

2428。

要求:
搜索请求峰值要求性能:8k RPS(请求/秒),刷最新推荐的文章和问题,请求峰值要求性能:8K RPS;
请对此功能进行系统设计


特伦姝
44 声望0 粉丝

不务正业的搬运工,分享一些技术指北。。。