面试基本信息
1.开始时间:3点(其实3点20)
2.时长: 2小时
3.工作地点: 深圳
4.实习岗位:web前端开发(pcg事业群)
5.面试时间:3月18日
6.面试平台:牛客网
面试官问题
一.计算机网络
-
介绍下自己,顺便详细介绍下项目
大概内容是:项目描述+项目负责模块+项目亮点+项目中的定位 -
url到页面的过程
DNS解析->TCP建立连接->发送http请求->缓存机制->服务器端处理->返回给客户端->TCP中止连接 -
Get与post请求区别
传参方式,作用,参数限制,post请求在某些游览器进行两次tcp请求,get请求默认缓存等方面 -
tcp与udp的区别
从端口,头部,面向连接,传输数据格式,应用等方面
二.操作系统
-
进程与线程的区别
一个应用至少一个进程,一个进程至少一个线程,然后资源调度分配与并发方面 -
进程间的通讯
管道、信号、信号量、套接字、消息队列、共享内存
三.数据结构
-
栈和堆
栈先进后出,然后从js的执行栈说了下应用。堆是对于二叉树的,然后从堆排序方面说了下 -
二叉树的遍历
先序,中序,后序,广度优先搜索,然后分别介绍了下算法实现 -
排序算法
快速排序,插入排序,堆排序,冒泡排序等,介绍了快排和冒泡排序,并介绍了时间复杂度
四 .JS
-
es6新语法
扩展运算符,箭头函数,模板字符串,类,数组方法等,并讲了下应用场景 -
面向对象的三大特征
多态,继承,封装,将一些如何实现 -
New的整个过程
先创建个新对象,并且与new后面对象的原型关联,this指向new后面的对象,执行new后面对象的构造函数,并且获取构造函数里面添加的属性,然后返回新对象。 -
面向对象编程的含义
从封装方法开始介绍,然后介绍了一些好处等 -
指针到引用
指针是指向的是资源地址空间,引用是对一段内容的引用,利用了共享充电宝来解释引用,共用同一份东西。 -
闭包是什么
一个函数使用另外个函数的变量,介绍闭包功能啥的 -
var,let,const的区别
从js解析开始到执行过程中的方面解释的区别,然后const定义变量必须要赋值,简单数据类型不可更改,引用对象可以改里面的内容,只要不改变其引用即可。 -
let,var,const可以定义一样的数据类型吗
let与const不行,var可以
五.Vue
-
介绍下vue
vue就是一个对象,然后从源码开始解释其机制,然后重点介绍了订阅者/发布者与mvvm,然后具体介绍了computed的源码实现机制,来讲述订阅者/发布者机制。 -
写一个页面,列表项为items,每一项有添加、修改、删除功能
考察组件化与vue代码能力
六.算法题
- 给定一串数字,寻找还有其中含有对称的数字,就是回文
刚开始想到的是从头到尾遍历,然后想出通过二分查找的方式,向左向右查找,问了两个算法的时间复杂度 - Nn的正方形,里面放有nn个边长为1的正方形,有多少个正方形,有多少个长方形
自己找规律,给出答案,并说出思路(长方形数量没问),答案一个是1^2 + 2^2+…
+n^2,长方形是C(2,n+1)*C(2,n+1) - 实现数组的去重算法
综述
全程还是非常友好的,不过可能选的部门是有点偏后端的,中途问我知道什么后端框架,然后问了下会node.js中间件吗,然后问了下会数据库和linux方面知识吗,当时直接说的只是了解,就没细问,然后问了下在项目中担任的角色,项目的优点,后面的规划。第一面还是很顺利的,大体都回答上了,不过二面有点惨,问了些dns服务器,然后数据库构建,然后一些问题的解决办法,都没回答上来,算法题也没写出来,凉透了。