[추수 준비 Day 4] 클래식 면접 문제 13-16 및 온라인 프로그래밍 문제 10-12 정답
9358 단어 IM웹 프런트엔드 가을 교육
면접 문제
13.null과 undefined의 차이?
null은 '없음' 을 나타내는 대상이며, 수치로 바뀔 때 0이다.undefined는 "없음"을 나타내는 원래 값으로, 숫자가 바뀌면 NaN이 됩니다.성명된 변수가 초기화되지 않았을 때, 변수의 기본값은undefined입니다.
null은 존재하지 않는 대상을 나타내는 데 사용되며, 함수가 존재하지 않는 대상을 되돌려 주려고 하는 것을 나타내는 데 사용됩니다.
undefined는 '값이 부족함' 을 표시합니다. 여기에 값이 있어야 하지만 아직 정의되지 않았습니다.일반적인 용도는 다음과 같습니다.
(1) 변수가 성명되었지만 값이 없을 때는undefined와 같다.
(2) 함수를 호출할 때 제공해야 할 매개 변수가 제공되지 않았습니다. 이 매개 변수는undefined와 같습니다.
(3) 대상은 값을 부여하는 속성이 없고 이 속성의 값은undefined이다.
(4) 함수가 값을 되돌려 주지 않을 때 기본적으로undefined를 되돌려줍니다.
null은 "대상이 없습니다"를 표시합니다. 즉, 이 곳에 값이 있을 수 없습니다.일반적인 용도는 다음과 같습니다.
(1) 함수의 매개 변수로서 이 함수의 매개 변수는 대상이 아니라는 것을 나타낸다.
(2) 객체 원형 체인의 끝점입니다.
14 .new 조작부호는 구체적으로 무엇을 했습니까?
1. 빈 대상을 만들고this 변수는 이 대상을 인용하며 이 함수의 원형을 계승한다.
2. 속성과 방법은this 인용 대상에 추가됩니다.
3. 새로 만든 대상은this에서 인용하고 마지막으로 은밀하게this로 돌아갑니다.
15 .어떤 조작이 메모리 유출을 야기합니까?
메모리 유출은 더 이상 가지고 있지 않거나 필요로 하는 대상이 존재하는 것을 가리킨다.
쓰레기 수거기는 정기적으로 대상을 스캔하고 각 대상을 인용한 다른 대상의 수량을 계산한다.만약 대상의 인용 수량이 0 (다른 대상이 이 대상을 인용한 적이 없음) 이거나, 대상에 대한 유일한 인용이 순환한다면, 대상의 메모리는 회수할 수 있다.
setTimeout의 첫 번째 인자가 함수 대신 문자열을 사용하면 메모리 유출을 일으킬 수 있습니다.
패키지 닫기, 컨트롤러 로그, 순환(두 대상이 서로 인용하고 보존할 때 순환이 발생)
16. 노드의 장점과 단점에 대해 자신의 견해를 제시했는가?
* (장점) Node는 이벤트 기반 및 차단이 없으므로 동시 요청 처리에 적합합니다.
따라서 노드에 구축된 프록시 서버는 다른 기술(예를 들어 루비)에 비해 훨씬 낫다.
또한 Node 프록시 서버와 상호 작용하는 클라이언트 코드는 javascript 언어로 작성됩니다.
따라서 클라이언트와 서버 측이 모두 같은 언어로 작성되는 것은 매우 아름다운 일이다.
* (단점) Node는 상대적으로 새로운 오픈 소스 프로젝트이기 때문에 불안정하며 항상 변경됩니다.
그리고 충분한 제3자 라이브러리 지원이 부족하다.보아하니 마치 루비/레일스 당시의 모습 같다.
전단 사고 문제
7. 지금까지 전단 canvas는 깊이 공부할 필요가 있습니까?
현재 휴대전화와 PC의 성능이 갈수록 좋아지고 adobe animation,body movin,lottie 등 도구도 점점 대중의 시야에 들어와 일반적인 상황에서의 수요는 모두 디자인으로 완성될 수 있을 것 같다.손으로 멋지게 쓴 캔버스의 기술이 점점 변두리화되고 있는 것 같다. 사람이 쓰는 것과 소프트웨어 생산의 가장 큰 차이는 무엇입니까?성능 문제입니까?현재 하드웨어의 발전 속도에 따라 성능이 또 하나의 문제가 될 수 있습니까?vas 자체의 학습 원가가 높고 개발 사고는 일반적인 의미의 전단과 다르다. 물론 첨단 게임 엔진, 렌더링, 데이터 시각화, 웹gl 측은 반드시 인재를 필요로 하지만 낮은 대체성, 가파른 학습 곡선은 생태의 악화를 설명할 수 있을까?낮은 사람들이 실천하는 장면이 없으면 나는 고급에 이르기가 매우 어렵다고 생각한다.
8. 당신은 어떻게 사이트의 파일과 자원을 최적화합니까?
효과적인 솔루션은 다음과 같습니다.
파일 병합
파일 최소화/압축
CDN 호스팅 사용
캐시 사용
온라인 프로그래밍 문제
10. 색상 문자열 변환
rgb 색상 문자열을 16진수로 변환합니다. 예를 들어 rgb (255, 255, 255) 를 #ffff로 변환합니다.
function rgb2hex(sRGB) {
var regexp=/rgb\((\d+),\s*(\d+),\s*(\d+)\)/;
var ret=sRGB.match(regexp);
if(!ret){
return sRGB;
}else{
var str='#';
for(var i=1;i<=3;i++){
var m=parseInt(ret[i]);
if(m<=255&&m>=0){
str+=(m<16?'0'+m.toString(16):m.toString(16));
}else{
return sRGB;
}
}
return str;
}
}
내 코드:
function rgb2hex(sRGB) {
var sRGB2 = sRGB.replace(/(?:\(|\)|rgb|RGB)*/g,"").split(",");
var strHex = "#";
for(var i=0; ivar hex = Number(sRGB2[i]).toString(16);
if(hex === "0"){
hex += hex;
}
strHex += hex;
}
if(strHex.length !== 7){
strHex = sRGB;
}
return strHex;
}
11. 문자열을 낙타 봉 형식으로 변환
css에는 백그라운드-image와 같은 통과-연결 문자가 자주 있습니다. 자바스크립트를 통해 스타일을 설정할 때 백그라운드 이미지 낙타 봉 형식으로 변환해야 합니다. 이 변환 기능을 완성하십시오.
function cssStyle2DomStyle(sName) {
return sName.replace(/(?!^)\-(\w)(\w+)/g, function(a, b, c){
return b.toUpperCase() + c.toLowerCase();
}).replace(/^\-/, '');
}
function cssStyle2DomStyle(sName) {
var arr = sName.split('');
// '-',
if(arr.indexOf('-') == 0)
arr.splice(0,1);
// '-'
for(var i=0; iif(arr[i] == '-'){
arr.splice(i,1);
arr[i] = arr[i].toUpperCase();
}
}
return arr.join('');
}
내 코드:
function cssStyle2DomStyle(sName) {
var result = new Array();
result = sName.split("-");
var string = "";
for (i = 0; i < result.length; i++) {
result[i] = result[i].slice(0, 1).toUpperCase()+ result[i].slice(1);
string = string + result[i];
}
string = string.slice(0, 1).toLowerCase() + string.slice(1);
return string;
}
12.이차적
수조arr의 모든 원소를 2차원으로 구합니다.직접 수조arr를 수정하지 마십시오. 결과는 새로운 수조로 되돌아옵니다
function square(arr) {
return arr.map(function(item,index,array){
return item*item;
})
}
function square(arr) {
//
var a = [];
arr.forEach(function(e){
// arr , a
a.push(e*e);
});
return a;
}