【面试】杭州边锋网络

  1. 一、笔试题
    1. 1、基础题
    2. 2、算法题:
    3. 3、系统设计
    4. 4、加分项:
  2. 二、面试题
  3. 三、总结
摘要

正式工作正好满一年,一直加班加需求的工作状态有点让自己疲倦了,所以想要停下来整理一段时间,再出发,也为了自己的职业发展能够向一个更好的方向发展,寻求更深层的技术拓展,和更多的技术伙伴,这个裸辞后的第一个面试,有点不太好,凭印象记录下面试和笔试题,正好为这段时间的整理提供一方面的素材。

基本过程:一点半到前台,填写了基本信息表,然后一个面试的人(估计是项目组技术负责人)带我穿过一个大厅,到了一个小房间,然后给我一份三页的笔试题让我先做着,,大概半个小时之后开始,带我进来的人和另外一个女性(懂技术,应该不是hr)一起进来面试。

一、笔试题

1、基础题

(1)面向对象的特性、修饰符类型、构造函数和析构函数的作用

面向对象的特性:

  • 继承:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

  • 封装:也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

  • 多态:一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。

参考:面向对象三大基本特性,五大基本原则-博客园

1
2
3
public(公共的、默认):可被外部访问
protected(受保护的):只允许子类访问
private(私有的):类内部可访问,外部不可访问(子类不能访问)
访问权限 public protected private
所有
子类
类内

参考:PHP面向对象——访问修饰符

构造函数和析构函数作用:

  • 构造函数

构造函数可以接受参数,能够在创建对象时赋值给对象属性
构造函数可以调用类方法或其他函数
构造函数可以调用其他类的构造函数

  • 析构函数

析构函数是在销毁对象时,自动调用,不能显示的调用。
析构函数不能带参数。

在以下几种情况下可能会调用析构函数(但不一定):

  • PHP页面加载完毕之后;
  • unset()类;
  • 变量引用指向别的对象或值时;

(2)输出执行结果

1
2
3
4
$a = 87;
$b = ($a % 7 ) * 16;

echo $a > $b ?: 0;

(3)输出执行结果

1
2
3
4
5
$a = 10;
$b = &$a;
unset($b);
$b = 2;
echo $b;

(4)null、‘’、‘ ’、0、‘0’、false 哪些是==的?

(4)array_split()、chunk_split()、wordrap()区别和用法

(5)交换数组键和值的函数、多维数组排序函数和使用方法

(6)数据库优化的原则

(7)php多进程的实现

(8)闭包和匿名函数的使用

(9)如何判断sql性能

2、算法题:

(1)递归实现汉诺塔

(2)查出一段时间内星期一和星期日的所有日期

(3)实现min函数获取数组最小元素的

3、系统设计

(1)访问量30w,高并发3000,需要日期和XX(另一个字段),谈谈设计思路。

(2)一个系统有多个属性,数量不定,但是不会超过32,如何实现增删改和快速检索?

4、加分项:

(1)列举5个以上php的扩展的使用方法

(2)简述一下你的得意之作

二、面试题

1、谈谈对设计模式的了解

资料:

2、cookie和session的使用

3、索引的设计原则

有A、B、C三个字段,现在需要查询 A AB AC,需要怎么建索引?

4、网络协议(七层、五层)分别是什么?TCP、HTTP分别是哪一层的?

五层协议

1
2
3
4
5
6
7
8
9
10
应用层(HTTP、FTP):
为应用软件提供了很多服务
构建于 TCP 协议之上
屏蔽网络传输相关细节
传输层(TCP):
向用户传输可靠的端到端(End-to-End)服务
传输层向高层屏蔽了下层数据通信的细节
网络层(IP):为数据在结点之间传输创建逻辑链路
数据链路层(数据链路):在通信的实体间建立数据链路连接
物理层(物理介质):定义物理设备如何传输数据

5、负载均衡了解吗?

6、php运行模式有哪些?

1
2
3
4
5
6
7
8
9
10
11
cgi 通用网关接口(Common Gateway Interface))

fast-cgi 常驻 (long-live) 型的 CGI

cli 命令行运行 (Command Line Interface):一般使用调用脚本、查看php信息时会使用到该模式
e.g:php -r "phpinfo();" |less 分页显示

web模块模式:
Apache + mod_php5
lighttp + spawn-fcgi
nginx + PHP-FPM

参考:

7、你了解过哪些github的项目?

8、索引是怎么提升效率的?

9、一个接口请求是3秒,如果优化到只需要0.3秒?(api接口优化)

10、浏览器输入url到页面加载出页面,整个流程是怎样的?

11、数据结构类型有哪些?

12、你了解的错误码有哪些?http请求时Cookie是请求的哪个部分?请求头有哪些?

13、状态码有哪些?

14、php是如何运行的?

15、git、svn了解吗?

三、总结

整体技术点回答的都不太好,一年的工作中一直停留在写业务上,系统设计和基础巩固,对于深一点的技术方案考虑较少,以前学过的基础知识,也因为长期没整理而一时答不上来,本身又不善言谈,表现不了自己的优势,又把自己的劣势暴露无意,所以一直在面试上都坎坎坷坷,当然最主要的还是基本功不太扎实,没有形成自身的核心竞争力。

未来可期,自勉!