滴滴服务端开发工程师(实习)面经

自我介绍

自我介绍,然后讲自己的一个作品。讲解一下作品中使用了哪些技术,有哪些模块和功能。(结构、数据库表、如何实现、网络延迟对功能的影响)

注:这一部分用时较长

了解熟悉哪些语言?(php、Java)

php :“array_merge ”和 “+”的区别 ?(没用到过这个函数,没答上来!)

<?php
$arr1 = array('a'=>'PHP');
$arr2 = array('a'=>'JAVA');
//如果键名为字符,且键名相同,array_merge()后面数组元素值会覆盖前面数组元素值
print_r(array_merge($arr1,$arr2)); //Array ( [a] => JAVA )
//如果键名为字符,且键名相同,数组相加会将最先出现的值作为结果
print_r($arr1+$arr2); //Array ( [a] => PHP )
?>

Java 编写一个发牌程序

1.讲完思路之后,面试官问还有没有更好的方法,一紧张脑子一片空白说暂时只想到了这个地方。很尴尬,修改了一次代码之后忘了保存,运行之后没有输出结果,然后面试官接着往下问。

import java.util.*;
public class Exam {
    public static void main(String[] args){
        Random random = new Random();

        int[] pai = {1,2,3,4,5,6,7,8,9,10,11,12};
        int[][] person = new int[3][4];

        for(int l = 0; l < person.length; l++){

            for(int j = 0; j < 4; j++ ){
                int i = random.nextInt(12);
                System.out.println("+"+j);
                if(pai[i] == -1){
                    j--;
                    continue;
                }
                person[l][j] = pai[i];
                pai[i] = -1;
            }
        }
        for(int i = 0; i < 3; i++){
                for(int s = 0; s < 4; s++){
                    System.out.print(" "+person[i][s]);
                }
                System.out.println();
        }
    }
}

2.视频结束后脑子突然又好用了,然后想到可以通过直接将 pai.length-1 下标处的牌赋给被移动下标的位置,下次随机数的范围减一。时间复杂度就直接是O(person.length x 4)了,不会因为出现相同随机数而增加时间复杂度了。

了解操作系统吗?Linux 如何定时任务…

我说使用过 crontab 然后面试官反馈说不是这个。。。

状态码 500、400 分别表示什么含义?

了解计算机网络吗?三次握手过程

balabala

四次挥手过程

balabala

大致就是这些内容,有些遗漏!


和预想的不太一样,本来以为会问很多关于数据结构、操作系统(书本上内容)、计算机网络等基础内容,然后大都问的是针对实际工作中可能会出现的问题,自己答得不太满意。

发表评论

电子邮件地址不会被公开。 必填项已用*标注