zoukankan      html  css  js  c++  java
  • 常见试题

    1、获取上一个月的第一天和最后一天

    1、获取上一个月的第一天和最后一天
    
    上个月第一天:
    echo date('Y-m-d', strtotime(date('Y-m-01') . ' -1 month'));   // 计算出本月第一天再减一个月
    上个月最后一天:
    echo date('Y-m-d', strtotime(date('Y-m-01') . ' -1 day'));     // 计算出本月第一天再减一天
    
    2.获取当月第一天及最后一天.
    $BeginDate=date('Y-m-01', strtotime(date("Y-m-d")));
    echo $BeginDate;
    echo "<br/>";
    echo date('Y-m-d', strtotime("$BeginDate +1 month -1 day"));
    echo "<br/>";
    
    3.获取当天年份、月份、日及天数.
    echo " 本月共有:".date("t")."天";
    echo " 当前年份".date('Y');
    echo " 当前月份".date('m');
    echo " 当前几号".date('d');
    echo "<br/>";
    
    4.使用函数及数组来获取当月第一天及最后一天,比较实用
    function getthemonth($date)
    {
     $firstday = date('Y-m-01', strtotime($date));
       $lastday = date('Y-m-d', strtotime("$firstday +1 month -1 day"));
       return array($firstday,$lastday);
    }
    

    2.PHP 代码 ,确保多个进程同时写入同一个文件成功

    PHP 暂停函数 sleep() 与 usleep() 的区别
    sleep()是暂停多少秒,usleep()是暂停多少微秒
    注意:usleep()单位是微秒,1秒 = 1000毫秒 ,1毫秒 = 1000微秒,即1微秒等于百万分之一秒。

    function writeData($filepath, $data) 
    { 
        $fp = fopen($filepath,'a');  
        do{ 
            usleep(100); 
        }while (!flock($fp, LOCK_EX));  //LOCK_EX 取得独占锁定(写入的程序)进行排它型锁定 获取锁 有锁就写入,没锁就得
        $res = fwrite($fp, $data."
    "); 
        flock($fp, LOCK_UN);    //LOCK_UN 释放锁定(无论共享或独占)。
        fclose($fp);  
        return $res; 
    } 
    

    3.写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php

    答案1:
    
    function getExt($url){
    
       $arr = parse_url($url);
    
      
    
       $file = basename($arr['path']);
    
       $ext = explode(".",$file);
    
       return $ext[1];
    
    }
    
    答案2:
    
    function getExt($url) {
    
        $url = basename($url);
    
        $pos1 = strpos($url,".");
    
        $pos2 = strpos($url,"?");
    
        if(strstr($url,"?")){
    
             return substr($url,$pos1 + 1,$pos2 - $pos1 - 1);
    
        } else {
    
          return substr($url,$pos1);
    
        }
    
    }
    

    **4.使用五种以上方式获取一个文件的扩展名。要求:dir/upload.image.jpg,找出 .jpg 或者 jpg 必须使用PHP自带的处理函数进行处理,方法不能明显重复,可以封装成函数 **

    方法1:
    
    function getExt1($filename)
    {
       $arr = explode('.',$filename);
       return array_pop($arr);;
    }
    
    方法2:
    
    function getExt2($filename)
    {
       $ext = strrchr($filename,'.');
       return $ext;
    }
    方法3:
    
    function getExt3($filename)
    {
       $pos = strrpos($filename, '.');
       $ext = substr($filename, $pos);
       return $ext;
    }
    方法4:
    
    function getExt4($filename)
    {
       $arr = pathinfo($filename);
       $ext = $arr['extension'];
       return $ext;
    }
    
    方法5:
    
    function getExt5($filename)
    {
       $str = strrev($filename);
       return strrev(strchr($str,'.',true));
    }
    

    5.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹

    function my_scandir($dir)
    {
        $files=array();
        
        if(is_dir($dir))
         {
            if($handle=opendir($dir))
             {
                while(($file=readdir($handle))!==false)
                 {
                    if($file!="." && $file!="..")
                     {
                        if(is_dir($dir."/".$file))
                         {
                            $files[$file]=my_scandir($dir."/".$file);
                         }
                        else
                         {
                            $files[]=$dir."/".$file;
                         }
                     }
                 }
                closedir($handle);
                return $files;
             }      
         }  
    }
    
    

    6.遍历一个文件夹下所有文件和子文件夹的函数

    function getTree($data, $pid = 0, $level = 0)
    {
        static $tree = array();
        foreach ($data as $k => $v) {
        	//如果是0,将其存到$tree 中,并以此节点为根节点,遍历其子节点
            if ($v["pid"] == $pid) {
                $v["level"] = $level;
                $tree[] = $v;
                getTree($data, $v["id"], $level + 1);
            }
        }
        return $tree;
    }
    

    7.如何判断一个字符串是否是合法的日期模式

    function checkTime($data){
    
    	if(date('Y-m-d H:i:s',strtotime($data))==$data){
    
    		return true;
    
    	}else{
    
    		return false;
    
    	}
    }
    

    8.单例模式

    三私一公
    class Signle
    {
        private static $instance = null;
    
        private function __construct()
        {
        }
     
        private function __clone()
        {
        }
     
        public static function getInstance()
        {
            if (is_null(self::$instance)) {
                self::$instance = new self();
            }
     
            return static::$instance;
        }
    }
    
  • 相关阅读:
    启动时间知多少?8款音视频类应用测评报告分析
    优化信息流很麻烦?三招教你轻松搞定
    vmstat
    iostat
    dstat
    strace
    Mysql(一)
    rsync
    Kubernetes-深入分析集群安全机制
    Kubernetes-apiserver
  • 原文地址:https://www.cnblogs.com/caibaotimes/p/13715711.html
Copyright © 2011-2022 走看看