php面試部分 二

2021-06-29 00:45:11 字數 1361 閱讀 3927

面試告一段落,其中用到的技術問題

總結一下:

1.如何從百萬條資料中查詢126.com/136.com等網易使用者郵箱賬號

(1)最原始 也是最笨拙暴力的方式

select * from user 

where email like '%@126.com' or 

email like '%@163.com'

(2)第二種正則匹配 可能比起上面一種方式要稍微

快一點,但是也是相當的笨拙。

select * from user 

where email regexp '@126.com$|@163.com$'

(3)第三種,我們需要更改表結構

在儲存的時候,我們分成兩張表,一張存放

使用者資訊,在email欄位只填寫 @ 符號前面的字元,

並追加乙個郵箱字尾id 作為郵箱字尾的分類外來鍵。

另一張則專門用來填寫@ 後面的內容,對應乙個id

這樣我們在查詢的時候,只要查郵箱的字尾id對應

的郵箱字尾為126.com和163.com的就可以了,這樣

查詢的速度最快。

2. ajax如何實現跨域請求?

我們知道ajax只能在同域下進行請求,跨域是不可以的。

我沒有仔細研究,這是找到的例子,可以參考一下:

基於h5的postmessage方法實現js跨域

基於h5的跨域共享特性

3.如何判斷使用者已經登入/或者使用者登陸後,瀏覽器關閉時,怎麼

知道使用者已經關閉瀏覽器

php中判斷瀏覽器關閉可以使用 connection_aborted() 函式

connection_aborted() 函式檢查是否斷開客戶機。

如果已終止連線,則該函返回 1,否則返回 0。

例子建立乙個函式,在客戶機終止指令碼時寫入一條日誌訊息:

<?php

function check_abort()

//要執行的一些**

// 在指令碼結束時呼叫 check_abort 函式

register_shutdown_function("check_abort");

?>

再有乙個是connection_status() 函式

connection_status() 函式返回當前的連線狀態。

可返回的可能值:

0 - connection_normal - 連線執行正常

1 - connection_aborted - 連線由使用者或網路錯誤終止

2 - connection_timeout - 連線超時

3 - connection_aborted & connection_timeout

每天進步一點點,從個好菜鳥。。。

php面試部分(一)

php 不占用埠 ftp 20用於控制 21 用於資料連線 memcached 11211 mysql 3306 redis 6379 mongodb 10001 smtp 25 pop3 110 通過phpinfo 檢視其中的 thread safety 項,這個專案就是檢視是否是執行緒安全,如果...

php面試題 Linux部分(高階部分)

top ps mv find df cat chmod chgrp grep wc top 該命令提供了實時對系統處理器狀態的監控,它能夠實時顯示系統中各個程序的資源占用情況。該命令可以按照對cpu 記憶體使用和執行時間對系統任務程序進行排序顯示,同時還可以通過互動式命令進行設定顯示。ps 顯示系統...

面試經典考題(二) 演算法部分

void main string args 1 產生乙個int陣列,長度為100,並向其中隨機插入1 100,並且不能重複。private static void test1 for int i 0 i 100 i console.readkey 2 求以下表示式的值,寫出您想到的一種或幾種實現方法...