热门课程

免费试听

上课方式

开班时间

当前位置: 首页 -   文章 -   新闻动态 -   正文

java算法与结构的面试题

知了堂姐
2024-07-08 17:22:16
0

java算法与结构的面试题


1、JS 中数据解构与算法

答:数组,对象集合,set,Map

1、栈 LIFO

2、队列

3、链表

4、字典

5、树

2、排序(冒泡,选择,插入,快排)

答:选择排序,选假设一个最大,与剩下的比较,如果比 max 大就交换

function select_sort(A){

for(let i = 0;i

let max = A[i];//假设第一个最大

for(let j = i+1;j < A.length;j++){

if (max < A[j]) {

max = A[j];

let mid = A[j];

A[j] = A[i]

A[i] = mid;

}

}

}

}

插入,准备一个新数组,然后依次去原数组中取值,先取一个放到数组里,再取第二个跟新

数组里面的进行比较,如果大于就放到后面,小于就再往前找一个,直到找到比当前要小的数,并

把它插入后面。

function insert(data,i,t){ //假设 data 为有序数组,插入

//data 有序数组,i 数组最大的索引,t 要插入的节点

let p = i-1;//p 为下一个要比较的元素的索引值

while(p>=0 && data[p] > t){ //data[p] > t 当比较的元素比传进来的元素大

data[p+1] = data[p]; //错位,把当前元素赋值给下一个元素地址:成都高新区天府软件园 G8-7F


p-- //p 往前走

}

data[p+1] = t //写入空位

}

function insert_sort(data){

for (var i = 0; i < data.length; i++) {

insert(data,i,data[i])

}

}

快排,利用递归

function querySort(arr){

if (!Array.isArray(arr)) return

if(arr.length <= 1){

return arr

}

var mid = arr.splice(Math.floor(arr.length/2),1)[0]

var left = [], right = [];

for(let i=0,len = arr.length;i<len;i++){

if (arr[i] >= mid){

right.push(arr[i])

}else{

left.push(arr[i])

}

}

return querySort(left).concat([mid],querySort(right))

}

3、数组去重

function unique(array){ //filter 同理

var n = []; //一个新的临时数组

for(var i = 0; i < array.length; i++){ //遍历当前数组

if (n.indexOf(array[i]) == -1){

n.push(array[i]);


}

return n;

}

const arr = [...new Set([arr])];

4、实现一个方法,找出一个数组中重复的元素

一:Array.prototype.repeNum = function(){

let new_arr = this.sort(); //先排序

let res = [] ;

for( let i = 0 ; i < new_arr.length ; i++){

if(new_arr[i] == new_arr[i+1] &&

//判断是否重复,是否已经放入容器

new_arr[i] !=new_arr[i-1]){

res.push(new_arr[i]);

}

}

return res

}

二:Array.prototype.repeNum = function(){//不排序,利用对象的 key

function arrMore(arr){

if (!arr.length) return

let obj = {};

for (var i = 0,len=arr.length; i < len; i++) {

var val = obj[arr[i]];

if(!val){


obj[arr[i]] = 1

}else{

obj[arr[i]] += 1

}

}

var arr = [];

for (let [key, value] of Object.entries(obj)) {

if(value>1){

arr.push(key-0)

}

}

return arr

}

}

三:Array.prototype.repeNum = function(){

if (!arr.length) return

var ret = arr.filter((val, index) => arr.indexOf(val) != index);//先找到有

重复的

return [...new Set(ret)];

}

5、数组的 flat 拉平

function flat(arr){

var arr1 = [];//闭包缓存

function _flat(arr){ //[2,3]

for (var i = arr.length - 1; i >= 0; i--) {

if (Array.isArray(arr[i])) {

_flat(arr[i])

}else{

arr1.push(arr[i])

}

}

}

_flat(arr)

return arr1

}

function flat(arr) {

arr.toString().split(',')

return arr

}


6、其他问题

6.1、技术方面

1、最近做什么项目?在项目遇到什么问题?如何解决的呢?

答:面试前自己一定要准备一波,把自己在简历上写的东西好好熟悉熟悉,不然面试的时候自己

大脑中会一片空白。如果是应届生,把自己平时练习的项目总结好。

如果觉得自己解决的问题都没什么技术含量,也可以说项目中其他同事解决的问题,或者是自

己在网上看到的问题。但前提是自己一定要搞清楚,以后自己遇到了也能解决。

2、最近在学什么技术?

答:此题主要是想考查你平时爱不爱学习,对新技术有没有一定的敏感度。不用你有多深的领悟

了解即可,但千万不能说没有。如果真的没有,去面试之前自己谷歌了解一些。

3、平时逛什么社区或者技术论坛?

答:主要是想了解你平时都是通过哪些途径学习,哪些娱乐社区就别说了,说一些前端方面的社

区,像掘金,阮一峰老师博客,github 等

4、你对加班怎么看?

答:根据自己真实情况说就好了,如果你说自己绝对不能加班,那是不可能的。

5、你还有什么想要了解的吗?

答:技术面试的时候就别问工资、五险一金啥的,这不是技术项目经理回答的(hr),问团队正在做

的项目类型,技术选型方面的问题,这对于你以后的工作很重要。同时如果你拿到 offer 也可以利用

没有去报到的空闲时间弥补。

6.2、HR 方面

一般过了技术面试以后,收到 offer 的大多小伙伴不重视 HR 面试,但是 HR 也有否决权,死在这个

上面太坑了,稍微准备一下即可,特别是刚毕业出来的小伙伴。

1、为什么要换工作?

答:换工作无非于那三个原因,钱给的不够、干的不开心(leader 操蛋)、公司没有上升空间。

只要大家的原因积极正向一点,别说前公司的坏话就好了,其它自由发挥。记住千万别说公司坏话,

哪怕真的很操蛋(日不咙从)。地址:成都高新区天府软件园 G8-7F

大家都在看

干货|都2019年了,你还不会用Git?

2024-07-08 浏览次数:0

学网络安全好就业吗?网络安全人才需求量不降反升

2024-07-08 浏览次数:0

最高薪资10.5K,恭喜信安班学员承包了五大头部...

2024-07-08 浏览次数:0

项目评审需要的是真技术,而不是freestyle

2024-07-08 浏览次数:0

知了堂IT训练营第四批圆满结束

2024-07-08 浏览次数:0

什么是动态测试?软件测试中的动态测试方法是什么?

2024-07-08 浏览次数:0
最新资讯