選擇題:
1.jquery ajax中都支援哪些資料類型?
text, html, xml, json, jsonp, and script.
2.常見的浏覽器端的存儲技術有哪些?
浏覽器端:cookie、WebStorage(localStorage、sessionStorage)、userData、indexedDB 伺服器端:session 3.嵌入在HTML文檔中的圖像格式可以是? 網頁html文檔支援的圖檔格式有jpg , gif , png 和 bmp 這四種,jpg , gif 和 png 格式的圖檔特點是體積很小,因為在網上很常見,然而 bmp就不常見了,因為這種格式雖然很清晰色彩豐富,但是所占記憶體很大,是以很少見,但是也是支援的。一共這4種。 4.下面屬于CSS3新增屬性的有? 1、box-shadow(陰影效果) 2、border-color(為邊框設定多種顔色) 3、border-image(圖檔邊框) 4、text-shadow(文本陰影) 5、text-overflow(文本截斷) 6、word-wrap(自動換行) 7、border-radius(圓角邊框) 8、opacity(透明度) 9、box-sizing(控制盒模型的組成模式) 10、resize(元素縮放) 11、outline(外邊框) 12、background-size(指定背景圖檔尺寸) 13、background-origin(指定背景圖檔從哪裡開始顯示) 14、background-clip(指定背景圖檔從什麼位置開始裁剪) 15、background(為一個元素指定多個背景) 16、hsl(通過色調、飽和度、亮度來指定顔色顔色值) 17、hsla(在hsl的基礎上增加透明度設定) 18、rgba(基于rgb設定顔色,a設定透明度) 5. inline、block、inline-block的差別 見博文 https://www.cnblogs.com/hy-sunny/p/5602236.html https://www.cnblogs.com/Ry-yuan/p/6848197.html 6.HTML5 新增的表單元素
- datalist
- keygen
- output
datalist 元素規定輸入域的選項清單。keygen 元素的作用是提供一種驗證使用者的可靠方法。output 元素用于不同類型的輸出。
7.置換元素與非置換元素
a) 置換元素:浏覽器根據元素的标簽和屬性,來決定元素的具體顯示内容。
例如:浏覽器會根據<img>标簽的src屬性的 值來讀取圖檔資訊并顯示出來,而如果檢視(x)html代碼,則看不到圖檔的實際内容;<input>标簽的type屬性來決定是顯示輸入 框,還是單選按鈕等。 (x)html中 的<img>、<input>、<textarea>、<select>、<object> 都是置換元素。這些元素往往沒有實際的内容,即是一個空元素。
置換元素在其顯示中生成了框,這也就是有的内聯元素能夠設定寬高的原因。
b) 不可替換元素:(x)html 的大多數元素是不可替換元素,即其内容直接表現給使用者端(如浏覽器)。
例如: <label>label中的内容</label> 标簽<label>是一個非置換元素,文字label中的内容”将全被顯示。
詳見置換元素(替換元素)和非置換元素(不可替換元素)
8.能固定背景圖檔的聲明
background-attachment
有三個值,scroll是預設值,背景圖像會随着頁面其餘部分的滾動而移動。
fixed當頁面的其餘部分滾動時,背景圖像不會移動。
inherit規定應該從父元素繼承 background-attachment 屬性的設定(繼承初始值: scroll)。
background-origin 屬性規定 background-position 屬性相對于什麼位置來定位。 background-clip 屬性規定背景的繪制區域。 9.display: none和visibility:hidden的差別: display: none;不為被隐藏的對象保留其實體空間;visibility:hidden;所占據的空間位置仍然存在,僅為視覺上的完全透明。display的切換會觸發reflow,而visibility觸發repaint。 10.哪個屬性不會讓 div 脫離文檔流(normal flow)? 一個元素脫離文檔流後,其他的元素在定位時候回當做沒看見他,兩者位置重疊都是可以的。脫離文檔流不是從dom樹中脫離,用浏覽器的審查元素可以看到脫離文檔流的元素,依然會出現在dom樹裡。脫離文檔流的實質,也就是将元素從普通的布局排版中拿走,其他盒子在定位的時候,會當做脫離文檔流的元素不存在而進行定位。 使用float屬性會使元素脫離文檔流,其他盒子會無視這個元素,但其他盒子内的文本依然會為這個元素讓出位置; position: absolute;生成絕對定位的元素,相對于static 定位以外的第一個父元素進行定位。元素框從文檔流完全删除,并相對于最近的已定位祖先元素定位,如果元素沒有已定位的祖先元素,那麼它的位置相對于最初的包含塊(即body元素)。元素原先在正常文檔流中所占的空間會關閉,就好像該元素原來不存在一樣。元素定位後生成一個塊級框,而不論原來它在正常流中生成何種類型的框,其他盒子與其他盒子内的文本都會無視它; position: fixed;生成絕對定位的元素,相對于浏覽器視窗進行定位,同樣脫離了文檔流,不占據空間; 但是,position: relative; 相對定位。相對定位是相對于該元素在文檔流中的原始位置,即以自己原始位置為參照物。設定了元素的相對定位以及偏移值,元素原始位置所占據的空間還保留在文檔流中,即占據文檔流空間(但是在新位置上不實際占據空間)。 11.英文字母全部轉為大寫:
text-transform:capitalize是首字母大寫
text-transfrom:lowercase是全部字母為小寫
text-transfrom:uppercase是全部字母為大寫
12.關于作業系統程序與線程的差別: 程序是資源配置設定的基本機關,線程是資源排程的基本機關。(“ 程序是資源配置設定的最小機關,線程是CPU排程的最小機關”) 13.
(function() {
var a = b = 5;
})();
console.log(b);
console.log(a);
上面的輸出結果:
var a=b=5相當于拆解成b=5;var a=b;b=5前面沒有var,相當于聲明為全局變量,而這裡a為局部變量,相當于:
var b=5; (function() { var a = b ; })(); 是以
console.log(b); //5
console.log(a); //Uncaught ReferenceError: a is not defined
14.頁面有一個按鈕button id為 button1,通過原生的js 設定背景色為紅色: document.getElementById('button1').style.backgroundColor="red"; 這裡要注意的是:1.bgcolor是标簽屬性,隻有body和table tr td 元素有該屬性,可以設定背景顔色,其他标簽使用bgcolor沒有效果;2.css中寫法為用“-”連接配接,而在JS中要改為駝峰寫法,即backgroundColor 或bgColor,非background-color。 15.浏覽器在一次 HTTP 請求中,需要傳輸一個 4097 位元組的文本資料給服務端,可以采用那些方式?
4097*8/1024≈32kb
post 是向伺服器傳送資料,資料量較大,較為合适。
而
IndexdDB 是 HTML5 的本地存儲,把一些資料存儲到浏覽器(用戶端)中,當與網絡斷開時,可以從浏覽器中讀取資料,用來做一些離線應用。
Cookie 通過在用戶端 ( 浏覽器 ) 記錄資訊确定使用者身份,最大為 4 kb 。
url 參數用的是 get 方法,從伺服器上擷取資料,大小不能大于 2 kb 。
Session 是伺服器端使用的一種記錄用戶端狀态的機制 。
local Storage 也是 HTML5 的本地存儲,将資料儲存在用戶端中(一般是永久的)。
填空題 1.javascript 語言特性中,有很多方面和我們接觸的其他程式設計語言不太一樣,比如說,javascript語言實作繼承機制的核心就是 1 ,而不是Java語言那樣的類式繼承。Javascript 解析引擎在讀取一個Object的屬性的值時,會沿着 2 向上尋找,如果最終沒有找到,則該屬性值為3 ; 如果最終找到該屬性的值,則傳回結果。與這個過程不同的是,當javascript解析引擎執行“給一個Object的某個屬性指派”的時候,如果目前Object存在該屬性,則改寫該屬性的值,如果目前的Object本身并不存在該屬性,則指派該屬性的值 。 1 prototype 2 原型鍊 3 undefined 2. 輸出對象中值大于2的key的數組 var data = {a: 1, b: 2, c: 3, d: 4}; Object.keys(data).filter(function(x) { return 1 ;}) 期待輸出:[“c”,”d”]
1 data[x]>2
Object.keys(Object) Array.filter(function) Object.keys(object)的傳回值是 一個數組,其中包含對象的可枚舉屬性和方法的名稱。詳見 Object.keys方法之詳解 javascript一種新的對象建立方式-Object.create() Array.filter(function)對數組進行過濾傳回符合條件的數組。詳見 JavaScript Array filter() 方法
Object.keys(data)的傳回值為數組["a","b","c","d"],經過 filter(function(x) { return ; })過濾,傳回值大于2的key的數組。x為傳回數組的屬性名稱即“a"、"b"、"c"、“d”,則對應的屬性值為data[x],比較語句為data[x]>2。
3.
填寫内容讓下面代碼支援a.name = “name1”; b.name = “name2”; function obj(name){ 1
} obj. 2 = "name2"; var a = obj("name1"); var b = new obj; 1 if(name){ this.name = name;}return this;
2 prototype.name
function obj(name){
if(name){
this.name = name;
}
return this;
}
obj.prototype.name = "name2";
var a = obj("name1");
var b = new obj;
console.log(a.name); // name1
console.log(window.name); // name1
console.log(b.name); // name2
//一般函數直接調用,預設this執行全局window|global
//通過obj('name1')調用,傳回this引用,并傳給a, 此時a等于window對象,即可輸出屬性name值
//new操作, new obj 等價于 new obj() ,執行個體化一個對象,這時this指向obj,要拿到b.name的值
//需要保證name屬性存在,屬性查找原則是先查找目前執行個體有沒有屬性,如果有就直接使用(若var b=new obj("name3"),那麼b.name="name3"),如果沒有就到原型上面找,再沒有就接着原型鍊一步一步,這裡為了和a.name作屬性差別,使用了if(name)有條件地建構this的屬性name
//是以,現在執行個體name屬性提供給a使用,原型上的name提供給b使用。
如果沒有if判斷
function obj(name){
this.name = name;
return this;
}
obj.prototype.name = "name2";
var a = obj("name1");
var b = new obj;
console.log(a.name);//name1
console.log(window.name);//name1
console.log(b.name);//undefined
// 這時b執行個體已經有屬性name,但參數name為undefined
個人認為為了不污染全局變量,不要用this比較好
function obj(name){
if(name){
var o=new Object();
o.name=name;
return o
}
}
obj.prototype.name= "name2";
var a = obj("name1");
var b = new obj;
console.log(a.name); //name1
console.log(b.name); //name2
問答題:
1. 請給Array本地對象增加一個原型方法,它用于删除數組條目中重複的條目(可能有多個),傳回值是一個包含被删除的重複條目的新數組。
Array.prototype.RepeatItems = function (){
let i,n,arr=[],j;
for(i=0;i<this.length;i++){
for(j=i+1;j<this.length;j++){
if(this[i]===this[j]){
arr.push(this.splice(j,1)[0])
}
}
}
return arr
};
console.log([1,2,3,1,6,3,6].RepeatItems());
2.
請填充代碼,使mySort()能使傳入的參數按照從小到大的順序顯示出來。
function
mySort() {
var
tags =
new
Array();
//使用數組作為參數存儲容器
請補充你的代碼
return
tags;
//傳回已經排序的數組
}
var
result = mySort(50,11,16,32,24,99,57,100);/傳入參數個數不确定
console.info(result);
//顯示結果
補充代碼:
tags=Array.prototype.slice.call(arguments); //ES6可用 Array.from(arguments)
tags.sort(function(a,b){return a-b});
3.

此題應該避免使用遞歸的方法,因為當count較大時,遞歸的方法耗時較長。 故考慮使用疊代法,可以使用數組記錄每一項。 但此題隻需要用到前面兩項,從節約空間的角度講不需要開辟數組。
function getNthFibonacci(count) {
if(count<0) return 0;
if(count<=1) return 1;
var first = 1;
var second = 1;
var third = 0;
for(var i = 2; i <= count; i++) {
third = first + second;
first = second;
second = third;
}
return third;
}
若用遞歸,最好用arguments.callee代替函數名
function getNthFibonacci(count){
if(count < 2){
return 1;
}else{
return arguments.callee(count - 1) + arguments.callee(count -2)
}
}
或
var getNthFibonacci=(function f(count){
if(count < 2){
return 1;
}else{
return f(count - 1) + f(count -2)
}
});
4.
html:
<div class="container">
<div class="header fn-clear">
<div class="logo">logo</div>
<div class="username">[email protected]</div>
</div>
<div class="main">
<div class="side-bar">menu</div>
<div class="content">左側内容</div>
</div>
<div class="footer">
footer
</div>
</div>
css:
body {
margin: 0;
}
.fn-clear:after {
content: " ";
clear: both;
display: block;
font-size: 0;
visibility: hidden;
height: 0;
}
.fn-clear {
zoom: 1;
}
.container {
padding: 10px;
}
.header {
background: #eee;
position: relative;
margin-bottom: 10px;
}
.logo {
width: 100px;
height: 100px;
float: left;
background: #f60;
}
.username {
position: absolute;
right: 10px;
bottom: 10px;
}
.main {
margin-bottom: 10px;
}
.side-bar {
width: 200px;
float: right;
background: #ccc;
}
.content {
margin-right: 200px;
background: #f6f6f6;
}
.footer {
background: #999;
}
一列定寬定義列自适應寬度的方法:CSS實作兩列布局,一列固定寬度,一列寬度自适應方法
智力題:
1.假設在今日頭條裡面,有很多從業人員檢查新聞是不是屬于虛假新聞,所有新聞真實率到達了98%,從業人員在檢驗一個真實的新聞把它檢驗為一個虛假的新聞的機率為2%,而一個虛假的新聞被檢驗為真實的新聞的機率為5%.那麼,一個被檢驗為真實的新聞确實是真實的新聞的機率是多大?
假設總共100個新聞,那麼真實新聞為98個,虛假新聞為2個,檢驗為真實的新聞總個數為真實的檢驗為真實的 和虛假的檢驗為真實的之和:98x(1-2%)+2x5%=96.14個,其中檢驗為真實的真實新聞個數即是真實的檢驗為真實的 個數:98x(1-2%)=96.04個,是以其真實機率為96.04/96.14=0.9989。
2.現在有兩堆石子,小今與小條玩遊戲,2個人都足夠聰明,兩個人規定:每次每人隻能從其中一堆中取走1個或2個或3個石子,最後将石子全部取完的人勝利.現在兩堆石子的個數為8和9,請問如何安排才能讓小今必勝?
程式設計題
1.給出一個長度不超過1000的字元串,判斷它是不是回文(順讀,逆讀均相同)的。
var line;
while(line=readline()){
var strs=line.split("");
var arr=strs.slice(0,strs.length);
var rev=strs.reverse();
if(Compare(arr,rev)){
print("Yes!")
} else{
print("No!")
}
}
//因為這裡比較的是字元串,是以比較函數寫的較為簡單
function Compare(arr1,arr2){
return (arr1.length==arr2.length)&& arr1.every(function(element,index){
return element===arr2[index];
})
}
注意點:JavaScript是不能用==或===操作符直接比較兩個數組是否相等的,因為JavaScript裡面Array是對象,==或===操作符隻能比較兩個對象是否是同一個執行個體。
是以需要自己寫一個比較函數,詳見JavaScript如何比較兩個數組的内容是否相同
2.現在有一個字元串,你要對這個字元串進行 n 次操作,每次操作給出兩個數字:(p, l) 表示目前字元串中從下标為 p 的字元開始的長度為 l 的一個子串。你要将這個子串左右翻轉後插在這個子串原來位置的正後方,求最後得到的字元串是什麼。字元串的下标是從 0 開始的,你可以從樣例中得到更多資訊。
var str=readline();
var strs=str.split("");
var n=readline();
n=parseInt(n);
for(var i=0;i<n;i++){
var info=readline()
info=info.split(" ");
var l=parseInt(info[0])+parseInt(info[1]);
var p=parseInt(info[0]);
strs=Reproduce(strs,p,l);
}
function Reproduce(strs,p,l){
var length=strs.length;
var first=strs.slice(0,l);
var mid=strs.slice(p,l);
mid=mid.reverse();
var last=strs.slice(l,length);
return first.concat(mid,last);
}
print(strs.join().replace(/,/g,""));
注意點:字元串方法split(),substring() 數組方法splice(),slice()。“将這個子串左右翻轉後插在這個子串原來位置的正後方”是指插在p+l(代碼中的l)的位置
3.你作為一名出道的歌手終于要出自己的第一份專輯了,你計劃收錄 n 首歌而且每首歌的長度都是 s 秒,每首歌必須完整地收錄于一張 CD 當中。每張 CD 的容量長度都是 L 秒,而且你至少得保證同一張 CD 内相鄰兩首歌中間至少要隔 1 秒。為了辟邪,你決定任意一張 CD 内的歌數不能被 13 這個數字整除,那麼請問你出這張專輯至少需要多少張 CD ?
var line=readline();
var lines=line.split(" ");
var n=parseInt(lines[0]);
var s=parseInt(lines[1]);
var L=parseInt(lines[2]);
var count=Math.floor((L+1)/(s+1)); //每張cd的歌曲數
var cd=0;
count=Math.min(n,count); //每張專輯中歌曲數量,不能比歌曲總數多
if(count%13==0){
count--;
}
cd=Math.floor(n/count);
var yu=n%count;
if(yu!=0){
cd++;
if(yu%13==0 && (count-yu)==1){ //在這種情況下必須再多弄一張專輯:倒數第一張必須向倒數第二張專輯借兩首歌(如果借一首那麼倒數第二張就被13整除了),但是此時倒數第一張專輯隻剩一個位置了(如27 27 26)
cd++;
}
}
print(cd);
轉載于:https://www.cnblogs.com/SofiaTJU/p/9320837.html