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;
        }
    }
    
  • 相关阅读:
    USACO Milk2 区间合并
    Codeforces 490B Queue【模拟】
    HDU 3974 Assign the task 简单搜索
    HDU 5119 Happy Matt Friends(2014北京区域赛现场赛H题 裸背包DP)
    Cin、Cout 加快效率方法
    POJ 1159 回文LCS滚动数组优化
    POJ 2479 不相交最大子段和
    POJ 1458 最长公共子序列 LCS
    在阿里最深刻的,还是职场之道给我的震撼
    精细化
  • 原文地址:https://www.cnblogs.com/caibaotimes/p/13715711.html
Copyright © 2011-2022 走看看