zoukankan      html  css  js  c++  java
  • 一些面试题

    PHP面试题

    PHP基础

    1. 请写出以下结果:

    echo json_encode(['a' => 1] + ['b' => 2, 'a' => 3, 'b']);
    //输出: 
    
    $param = 1;
    $funcA = function ($val) use (&$param) {
        $param++;
        return $param + $val;
    };
    $funcB = function () use ($param) {
        $param++;
        return $param;
    };
    var_dump($funcA(2)); //结果: 
    var_dump($funcB()); //结果: 
    var_dump($param); //结果: 
    

    2. 请说明以下常见错误:

    • Notice: Undefined variable: test
    • Fatal error: Uncaught Error: Class 'FooTest' not found
    • Fatal error: Uncaught Error: Call to a member function abc() on null
    • Fatal error: Uncaught Error: Call to undefined method Test::abc()
    • Fatal error: Uncaught ArgumentCountError: Too few arguments to function Test::abc()
    • Parse error: syntax error, unexpected ';', expecting ']'

    3. 写出以下 PHP 魔术方法含义

    • __callStatic()
    • __toString()
    • __invoke()
    • __sleep()

    PHP应用

    1. 请说明以下使用哪种设计模式

    • 设计模式1:单例
    class Test1 {
        protected static $instance;
        public static function getInstance() {
            if (! self::$instance) {
                self::$instance = new self();
            }
            return self::$instance;
        }
    }
    
    • 设计模式2:工厂
    class Test2 {
        public function factory($config) {
            return new self($config);
        }
    }
    
    • 设计模式3:观察者
    class Reader implements SplObserver {
        public function update(SplSubject $subject) {
            echo $subject->title;
        }
    }
    class News implements SplSubject {
        private $observers = [];
        public function attach(SplObserver $observer) {
            $this->observers[] = $observer;
        }
        public function detach(SplObserver $observer) {}
        public function notify() {
            foreach ($this->observers as $obj) {
                $obj->update($this);
            }
        }
    }
    

    2. 你所知道的 PSR 规范有哪些,并说明其作用:

    3. 说明 composer global requirecomposer require 区别

    4. 在 composer.json 中依赖包有说明版本,请说明以下语义化版本的意思:

    • "^1.2.3"
    • "~1.2.3"
      波浪符号(~):他会更新到当前minor version(也就是中间的那位数字)中最新的版本。放到我们的例子中就是:body-parser:~1.15.2,这个库会去匹配更新到1.15.x的最新版本,如果出了一个新的版本为1.16.0,则不会自动升级。波浪符号是曾经npm安装时候的默认符号,现在已经变为了插入符号。
      插入符号(^):这个符号就显得非常的灵活了,他将会把当前库的版本更新到当前major version(也就是第一位数字)中最新的版本。放到我们的例子中就是:bluebird:^3.3.4,这个库会去匹配3.x.x中最新的版本,但是他不会自动更新到4.0.0。
      网络协议/服务

    1. HTTP协议中几个状态码的含义

    • 204
    • 301
    • 401
    • 403
    • 404
    • 405
    • 500

    2. 请看以下HTTP数据流, 写出PHP代码如何接收以下HTTP POST的内容数据和Query参数, 并按响应结果写出相应的执行代码:

    POST /index.php?ccc=123 HTTP/1.1
    Host: localhost
    Content-Type: application/json
    Accept: application/json
    Content-Length: 28
    
    {"aaa":"test","bbb":[1,2,3]}
    
    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-Length: 40
    
    {"aaa":"test","bbb":[1,2,3],"ccc":"123"}
    

    3. 请写一个 Restful 设计风格的增删改查(CURD)接口写法

    如,获取所有用户列表: GET /users

    请写出相应的增删改:

    4. 请说明下优化 Mysql sql 查询的技巧和做法

    5. Mysql 的 innodb 引擎与 MyISAM 引擎哪些区别

    6. 请写出Linux常用操作命令

    • 显示某文件末尾几行 tail -n 20或者sed方法 -n 可以查看行以及搜索特定字符
    • 文件内容关键字搜索 sed -n '/name/'p filename
    • 查看当前进程 ps aux 或者查看某XXX进程 ps -ef | grep xxx
    • 下载某URL文件 wget -c http://baidu.com/aaa.rar -c 支持断点续传
    • 网络抓包 tcpdump tcp port 23 host 210.27.48.1(获取主机210.27.48.1接收或发出的telnet包)

    7. 请写出以下服务的用途

    • CDN 内容分发网络 可以将静态文件放在cdn上减少因网络问题带来的延迟,功能服务器压力减小。
    • LVS linux虚拟服务器 负载集群使用
    • HaProxy

    前端

    1. a.jsb.js 请用 CMD 或 AMD 模块化规范写出 b.js 如何引用 a.js.

    2. 你所使用的构建工具是(glup, grunt, webpack) ?

    3. 请写出 es6 的新语法特性(至少3个)

    4. a.com/index.html 访问 b.com/api.php 的数据, 遇到跨域问题, 请写出在 HTML5中的跨域解决方案

    综合

    如何看待前后端分离, 如果让你设计一前后端分离的后台管理系统, 你会运用哪些前后端的应用库和设计结构.

    高山仰止,景行行止,虽不能至,心向往之。
  • 相关阅读:
    DateTime的精度小问题
    使用For XML PATH 会影响Cross Apply 返回
    一个update的小故事
    行大小计算测试
    Sql Server 2008R2 遇到了BCP导入各种中文乱码的问题
    php-fpm 启动不了 libiconv.so.2找不到
    Git使用教程
    支付宝接口使用文档说明 支付宝异步通知
    Linux(CentOs6.4)安装Git
    NGINX防御CC攻击教程
  • 原文地址:https://www.cnblogs.com/yudubujue/p/15151851.html
Copyright © 2011-2022 走看看