通过一份笔试题来发现技术水平,查缺补漏

来源:互联网 发布:java程序员面试秘笈 编辑:程序博客网 时间:2024/05/06 15:58

今天去一猎头公司谈职业规划,最后我说自己没自信源于技术水平差。正好她那边有份笔试题让我试试找回自信,看完题目后感觉还是很差,特别是正则相关的东西依然生疏。
其实这些题目基本是中高级研发必考的题目,可惜的是还是没有掌握。现在记下来并巩固一下相关知识。
凭记忆大致记录下,描述不详尽,只是明白意思:

  1. js实现跨域的原理
    整理答案:
    (1)在客户端解决js跨域问题目前最常用的方法有2种:设置document.domain、通过script 标签加载。
    (2)客户端的解决方案局限性太大,而且对于ajax跨域请求,无论两个域是否属于同个基础域,都无法在客户端加以解决。也就是 说,如果 我们要想在ajax请求中访问其他域下的数据,就只能通过服务端进行处理了。 服务端的解决方案的基本原理就是,由客户端将请求发给本域服务器,再由本域服务器的代理来请求数据并将响应返回给客户端。 最常用的服务器解决方案就是利用web服务器本身提供的proxy功能,如apache和lighttpd的mod_proxy模块。
    详细描述请参考http://arronzhen.iteye.com/blog/832687
  2. 如何编写 Javascript 的 Class ,如何实现继承?
    可用 prototype 来实现,包括继承和重载,也可以通过这个关键字来实现。
    参考js的面向对象编程  http://www.blogjava.net/baoyaer/articles/105730.html
  3. js正则判断email
    写法比较多,必须掌握js正则语法以及常用的验证规则。

     function checkemail(str) {   //检查email
            var re = /^([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;  
            return re.test(str);   
    }

    function ismail(mail) {
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    if (filter.test(mail)) return true;
    else {
    alert('您的电子邮件格式不正确');
    return false;}
    }


  4. mysql和mysqli区别?

    mysqli扩展,我们有时称之为MySQL增强扩展,可以用于使用 MySQL4.1.3或更新版本中新的高级特性。mysqli扩展在PHP 5及以后版本中包含。
    mysqli扩展有一系列的优势,相对于mysql扩展的提升主要有:
    面向对象接口
    prepared语句支持(译注:关于prepare请参阅mysql相关文档)
    多语句执行支持
    事务支持
    增强的调试能力
    嵌入式服务支持
    参考 http://holyrain1314.blog.163.com/blog/static/10011413520122414811921/


  5. mysql数据库引擎
    在缺省情况下,MYSQL支持三个引擎:ISAM、MYISAM和HEAP。另外两种类型INNODB和BERKLEY(BDB),也常常可以使用。
    经常使用的有MYISAM和INNODB 。
    MYISAM强调了快速读取操作
    INNODB和BDB包括了对事务处理和外来键的支持,如果你的设计需要这些特性中的一者或者两者,那你就要被迫使用后两个引擎中的一个了。
    参考:http://www.cnblogs.com/xulb597/archive/2012/05/25/2518118.html
  6. php正则判断email

    preg_match('/^[a-z0-9_\-]+(\.[_a-z0-9\-]+)*@([_a-z0-9\-]+\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)$/',$email)
    参考http://www.dewen.org/q/1111

  7. mysql优化方法
    该问题比较笼统,全面回答内容三四十条
    以下几方面考虑:
    硬件
    操作系统/软件库
    SQL服务器(设置和查询)
    应用编程接口(API)
    应用程序

    所有优化参考:
                             http://314200716.blog.163.com/blog/static/553580272010102443825974/
                             http://down.51cto.com/data/624564

    性能优化参考:http://www.searchdatabase.com.cn/showcontent_38045.htm


  8. 慢查询查看
    (1)通过查看mysql的慢查询日志分析,比如我们可以tail -f  slow_query.log查看里面的内容

    (2)使用mysqldumpslow命令分析,例如mysqldumpslow -s c -t 10 /tmp/slow-log

             这会输出记录次数最多的10条SQL语句
    参考:http://www.linuxidc.com/Linux/2013-07/87457.htm

    MySQL调优三步曲(慢查询、explain profile) : http://www.linuxidc.com/Linux/2012-09/70459.htm


  9. 一个url地址中获取域名及文件后缀名
  10. 何为APC?
    APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”。它为我们提供了缓存和优化PHP的中间代码的框架。 APC的缓存分两部分:系统缓存和用户数据缓存。
    参考:http://www.2cto.com/kf/201210/160140.html
  11. 用过的php框架?框架原理?单一入口优缺点
    常用php框架 zend ,yii ,thinkphp,CI

    原理:
    通过提供一个开发Web程序的基本架构,PHP开发框架把PHPWeb程序开发摆到了流水线上。换句话说,PHP开发框架有助于促进快速软件开发(RAD),这节约了你的时间,有助于创建更为稳定的程序,并减少开发者的重复编写代码的劳动。这些框架还通过确保正确的数据库操作以及只在表现层编程的方式帮助初学者创建稳定的程序。PHP开发框架使得你可以花更多的时间去创造真正的Web程序,而不是编写重复性的代码。
    PHP开发框架背后的思想被称为“模型—视图—控制器”(MVC)。MVC是这样一种架构模式,它隔离了业务逻辑与UI,允许其一改变而另一者不受影响。(也可以说是关注点的隔离)在MVC中,模型负责数据,视图负责表现,控制器则是程序主体或者说是负责业务逻辑。从本质上说,MVC拆分了一个程序的开发过程,这样你就可以修改独立的每一部分,而其他部分不受影响,这是十分重要的,它使得编写PHP代码更为快捷简单。

    单一入口优缺点:
    (1)、多入口就是通过访问不同的文件来完成用户请求。
    单一入口指web程序所有的请求都指向一个脚本文件的。
    (2)、单一入口更容易控制权限,方便对http请求可以进行安全性检查。
    缺点:URL看起来不那么美观,特别是对搜索引擎来说不友好。

  12. 随机生成一个长度为10的数组
    不清楚该题的考点和标准答案。
    提醒我们多掌握一些php数组相关函数。
    array_rand(), shuffle() , range() 等和随机函数有一定关系。
  13. php魔术方法列举
    __construct(),__destruct(),__call(),__callStatic(),__get(),__set(),__isset(),__unset(),__sleep(),__wakeup(),__toString(),__invoke(),__set_state() 和 __clone()    等方法在 PHP 中被称为"魔术方法"(Magic   methods)。在命名自己的类方法时不能使用这些方法名,除非是想使用其魔术功能。
  14. 从大小为8G的日志文件中读取email地址,保存到另一个文件中
    读取大文件的方法3种,最后一种理想。
    直接采用file函数来操作
    直接调用linux的tail命令来显示最 后几行
    直接使用php的fseek来进行文件操作

    参考:http://justcoding.iteye.com/blog/986293

    下面的代码是读取功能,写入用file_put_contents()函数
    function getbigfile(){
        $file_path = "input.txt";
        $handle = fopen($file_path, "r+");
        if ($handle) {
            while (!feof($handle)) {
                $buffer = fgets($handle, 8000);
                echo $buffer;  
            }
            fclose($handle);
        }
    }
    //getbigfile();

    $fp = new SplFileObject('input.txt');
    //$fp->seek(0);
    //$line = $fp->current();

    $line2 = $fp->fgets();
    print_r($line2);

  15. linux定时关机shell脚本
    shutdown -h 10:42 'Hey! Go away!' 10:42 分关机
    参考:http://blog.csdn.net/qsd007/article/details/1584872
    请熟悉一下常用 linux命令。
  16. linux查看新增日志方法

    cat /var/log/*.log

    如果日志在更新,如何实时查看 tail -f /var/log/messages

    还可以使用 watch -d -n 1 cat /var/log/messages

    -d表示高亮不同的地方,-n表示多少秒刷新一次。

    该指令,不会直接返回命令行,而是实时打印日志文件中新增加的内容,这一特性,对于查看日志是非常有效的。如果想终止输出,按 Ctrl+C 即可。

  ===============================================================================
       补充下之前面试的一些题涉及的要点:
       1、求两个文件夹相对路径的方法。
       2、常用模式
       3、几种排序算法实现

原创粉丝点击